- weniger Abhängigkeiten
- aktuellere Tools
npm run foo
führt den Eintrag foo
der scripts
-node der aktuellen package.json
aus
run
ist ein Shortcut für run-script
. Es gibt weitere praktische shortcuts wie npm test
, npm start
, npm stop
für npm run test
etc.
"scripts": {
"eslint": "eslint '*.js'",
}
Es gibt pre- und post-hooks, die den gleichen Namen plus ein pre
- oder post
-Präfix tragen müssen. Mehrere Tasks können mittels &&
hintereinander oder mit &
parallel ausgeführt werden. Es können zusätzliche Argumente an ein script übergeben werden, indem man sie durch --
getrennt anhängt.
"scripts": {
"jshint": "jshint javascript --exclude javascript/vendor",
"eslint": "eslint javascript --ignore-pattern javascript/vendor --fix",
"lint": "npm run jshint --silent & npm run eslint --silent",
"prejs": "npm run lint",
"js": "r.js -o javascript/build.json",
"js:dev": "npm run js -- useSourceUrl=true optimize=none",
}
Alle Programme in node_modules/.bin können direkt mit npm run
aufgerufen werden.
Npm scripts ist von alleine nicht schneller als grunt - sondern lesbarer. Sowohl sass
als auch svgmin
sind schnell, da Sindre Sorhus eachAsync zum Iterieren über die Dateien verwendet. Das könnten wir für uns auch umsetzen. Bei kleinen Tasks merkt man den Overhead von Grunt, bei komplexen Abläufen merkt man die Qualität einzelner Grunt-Plugins.
Streaming einzelner Dateien ist leicht, streaming ganzer Verzeichnisbäume muss man sich wohl selber basteln.
How npm handles the "scripts" field https://docs.npmjs.com/misc/scripts
How to Use npm as a Build Tool https://www.keithcirkel.co.uk/how-to-use-npm-as-a-build-tool/
Why npm Scripts? https://css-tricks.com/why-npm-scripts/
Why I Left Gulp and Grunt for npm Scripts https://medium.freecodecamp.com/why-i-left-gulp-and-grunt-for-npm-scripts-3d6853dd22b8