Skip to content

Latest commit

 

History

History
57 lines (34 loc) · 2.32 KB

README.md

File metadata and controls

57 lines (34 loc) · 2.32 KB

pqr

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

Installation

$ go get github.com/charmander/pqr

Intended incompatibilities with npm run-script

  • pqr runs only the specified script; npm also runs scripts with pre and post prefixes if they exist. Use [pqr prescript && ]pqr script[ && pqr postscript] for compatibility.

  • pqr uses the nearest package.json it finds along the current path (./package.json, ../package.json, ../../package.json, …). npm uses a prefix consistent across all commands: the nearest directory containing either a package.json or a node_modules after first removing all node_modules components 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 yes.)

  • pqr runs the script with an unmodified environment; npm adds several of its own strings. (See npm run-script env.)

  • pqr requires sh; npm will use %ComSpec% or cmd on Windows.

  • pqr doesn’t include npm’s node-gyp-bin in 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-script or run, and the original npm otherwise; add it to your PATH before the original npm.