https://github.com/springtype-org/st-run
A chainable, faster, always up-to-date npx alternative and also a system command executor. Run multiple commands in one npm script.
https://github.com/springtype-org/st-run
chain-commands cli command-line cross-platform fast npm npmscripts npx runner selfupdate
Last synced: about 1 year ago
JSON representation
A chainable, faster, always up-to-date npx alternative and also a system command executor. Run multiple commands in one npm script.
- Host: GitHub
- URL: https://github.com/springtype-org/st-run
- Owner: springtype-org
- License: mit
- Created: 2019-10-29T04:20:17.000Z (over 6 years ago)
- Default Branch: master
- Last Pushed: 2023-01-06T02:14:33.000Z (about 3 years ago)
- Last Synced: 2025-01-05T06:29:49.520Z (about 1 year ago)
- Topics: chain-commands, cli, command-line, cross-platform, fast, npm, npmscripts, npx, runner, selfupdate
- Language: TypeScript
- Homepage: https://www.springtype.org
- Size: 625 KB
- Stars: 1
- Watchers: 2
- Forks: 0
- Open Issues: 11
-
Metadata Files:
- Readme: README.md
- License: LICENSE
- Code of conduct: CODE_OF_CONDUCT.md
Awesome Lists containing this project
README
### `npx` replacement: `st-run st-rm-rf dist ++ system:tsc`
> π¨Just like `npx` but chainable, way faster and always using `@latest` of any command π¨
> π Get rid of node scripts to chain commands π
> πGet rid of direct & out-dated CLI dependencies π
> π§βπ€βπ§ Cross-platform and end-2-end tested β¨
#### Performance
~2x faster than `npx` when your machine is online:

~5x faster than `npx` when your machine is offline:

And it always checks for the `@latest` version when your machine is online.
#### Usage
You can use `st-run` in npm scripts [like this](https://github.com/springtype-org/st-run/blob/master/package.json#L23):
```
{
"name": "your-node-module",
"scripts": {
"copy-smth": "st-run st-cp package.json package.json2"
},
"dependencies": {
"st-run": "latest"
}
}
```
This way you may *get rid of some direct dependencies* and make sure the CLI tools being _used by end-users are always up to date_.
Or install it globally like `npx`:
npm i -g st-run
And use it globally just like `npx`:
st-run st-cp package.json package.json2
#### `commandA arg1 ++ commandB arg1 arg2` Chaining Syntax
You can get rid of special node scripts to chain commands by letting `st-run` chain them for you:
st-run st-cp package.json package.json2 ++ st-cp package.json2 package.json3
As you can see, a simple `+` chains two or more commands. There is no command count limit.
#### `command@specificVersion` Syntax
With `st-run` you can have multiple cached versions at the same time (just like with `maven`, `gradle` etc.):
st-run st-cp@1.0.0 package.json package.json2 ++ st-cp@2.0.0 package.json2 package.json3
Cool?
### `system:command` Syntax
Oh, you want to run a command that is not an npm script? `st-run` got you covered:
st-run system:rm -rf dist + system:tsc
This also works for globally installed npm packages that you don't want to update on-the-fly.