{"id":17749452,"url":"https://github.com/oresoftware/gmx","last_synced_at":"2026-01-19T06:33:09.121Z","repository":{"id":57251511,"uuid":"131895890","full_name":"ORESoftware/gmx","owner":"ORESoftware","description":"🔶 gmx 🔶 Gimmicks for the win. Similar to \"npx\". 🔶","archived":false,"fork":false,"pushed_at":"2020-05-08T03:15:13.000Z","size":587,"stargazers_count":1,"open_issues_count":3,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-03-16T09:45:43.643Z","etag":null,"topics":["developer-experience","dx","local-development","nodejs","npm","npx"],"latest_commit_sha":null,"homepage":"","language":"Shell","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ORESoftware.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.md","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2018-05-02T19:19:03.000Z","updated_at":"2020-05-08T03:15:15.000Z","dependencies_parsed_at":"2022-09-08T16:00:05.664Z","dependency_job_id":null,"html_url":"https://github.com/ORESoftware/gmx","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ORESoftware%2Fgmx","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ORESoftware%2Fgmx/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ORESoftware%2Fgmx/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ORESoftware%2Fgmx/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ORESoftware","download_url":"https://codeload.github.com/ORESoftware/gmx/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247640162,"owners_count":20971549,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["developer-experience","dx","local-development","nodejs","npm","npx"],"created_at":"2024-10-26T11:23:22.668Z","updated_at":"2026-01-19T06:33:09.103Z","avatar_url":"https://github.com/ORESoftware.png","language":"Shell","funding_links":[],"categories":[],"sub_categories":[],"readme":"\n\n# GMX - running local NPM executables by default\n\nPronounced \"gimmicks\". \u003cbr\u003e\nThis tool is similar to the official NPM tool \"npx\", but \"gmx\" attempts to do less, but do less better.\n\n---------\nIf local executables exist in `./node_modules/.bin`, gmx will use those first.\nFor example, if you have a local and global version of nodemon, `gmx -- nodemon`, will use the local version\nif you are within the project, otherwise if your cwd is outside the project, will use the global version of nodemon.\nJust depends on your cwd.\n\n---------\n\n## Installation:\n\n```bash\nnpm install -g gmx\n```\n\n## Usage\n\n```bash\n $ gmx echo 'foobar'\n```\n\n\n### Something more useful/realistc\n\nYou may want to run a local version of typescript/tsc or nodemon, so you would do:\n\n```bash\n $ gmx -- tsc -w\n```\n\nor:\n\n```bash\n $ gmx -- nodemon\n```\n\n\n### To define an executable string, use:\n\n```bash\n $ gmx --exec='tsc -w'\n```\n\nor for short:\n\n```bash\n $ gmx -e 'tsc -w'\n```\n\n## Running jobs in parallel\n\nBash does a fine job of running things in series, so we don't need to help bash with that,\u003cbr\u003e\nbut if you want to run commands in parallel, use gmx:\n\n\n```bash\n $ gmx -e 'echo \"foo\"' -e 'exit 3' -e 'echo \"baz\"'\n```\n\nthe above will exit with code 1, as evidence by the output from:\n\n\n```bash\n $ gmx -e 'echo \"foo\"' -e 'exit 3' -e 'echo \"baz\"'; echo $?\n```\n\nif we run the above, we get:\n\n\u003e foo \u003cbr\u003e \n\u003e baz \u003cbr\u003e\n\u003e 1\n\n\nto exit the `gmx` process with 0 if any subcommand exits with 0, use the `--any` option:\n\n\n```bash\n $ gmx --any -e 'echo \"foo\"' -e 'exit 3' -e 'echo \"baz\"'; echo $?\n```\n\nnow we get:\n\n\u003e foo \u003cbr\u003e\n\u003e baz \u003cbr\u003e\n\u003e 0\n\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Foresoftware%2Fgmx","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Foresoftware%2Fgmx","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Foresoftware%2Fgmx/lists"}