Skip to content

Instantly share code, notes, and snippets.

@mstoltenburg
Last active April 12, 2017 12:30
Show Gist options
  • Save mstoltenburg/b6f2ae56da0a53612d8d3d90375a295a to your computer and use it in GitHub Desktop.
Save mstoltenburg/b6f2ae56da0a53612d8d3d90375a295a to your computer and use it in GitHub Desktop.

npm scripts

warum sollte man wechseln?

  • weniger Abhängigkeiten
  • aktuellere Tools

wie geht's?

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.

Erkenntnisse

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.

Links

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

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment