Runs package.json scripts without Node and npm overhead.
$ time npm run echo test > @ echo pqr/test > echo "test" test real 0m0.200s user 0m0.186s sys 0m0.017s $ time pqr echo test test real 0m0.003s user 0m0.003s sys 0m0.000s
$ go get github.com/charmander/pqr
Intended incompatibilities with
pqr runs only the specified script; npm also runs scripts with
postprefixes if they exist. Use
[pqr prescript && ]pqr script[ && pqr postscript]for compatibility.
pqr uses the nearest
package.jsonit finds along the current path (
../../package.json, …). npm uses a prefix consistent across all commands: the nearest directory containing either a
node_modulesafter first removing all
node_modulescomponents from the end of the current path.
pqr adds arguments to the end of script commands with
"$@"; npm double-quotes each argument after escaping only double quotes. (For example,
npm run-script script -- '\"; yes #'will execute
pqr runs the script with an unmodified environment; npm adds several of its own strings. (See
npm run-script env.)
sh; npm will use
pqr doesn’t include npm’s
PATH(because it doesn’t require npm to exist); find the directory with
npm run env dirname '$(which node-gyp)'and run
PATH=node-gyp-bin:$PATH pqr …for near-compatibility.
Running nested scripts with pqr
Create an npm wrapper that delegates to pqr if its first argument is
run, and the original npm otherwise; add it to your
PATH before the original npm.