generated at
npm run script


node.jsに標準添付されてるnpmコマンドについてるタスクランナー
複数コマンドを順に実行・並列に実行はできる
プログラムは書けないので、条件分岐はきびしい
例: NODE_ENV===production の時はsourcemapを埋め込まない、など

package.jsonに書く
package.json
"scripts": { "postinstall": "npm run build", "start": "node run-server.js", "start:dev": "DEBUG=gyazz* node-dev run-server.js", "build": "npm run babel && npm run browserify && npm run sass && gulp build", "babel": "babel src/ --out-dir build/ --source-maps inline", // (略) }

実行する
$ npm run build
runに続けてコマンド名で実行する
$ npm start
$ npm test
startとtestはrunを省略できる
$ npm run babel
$ npm run babel -- --watch
間に -- を入れてから続けて付けたオプションはscriptに渡される
$ babel src/ --out-dir build/ --source-maps inline --watch
が実行される
npm v3からの機能なので、node本体が0.10とかだと動かない

pre, post hook
prestart postinstall などのscriptを書いておくと、startやinstallの前に実行してくれる
npm install したらビルドが走る、とか

プロジェクトルートの node_modules/ にpathが通った状態で実行される
./node_modules/.bin/babel とか書かなくてok
でも ./node_modules/.bin/ にコマンドが無い時に実行するとシステム内の他のpathを見に行ってしまうので、きっちり ./node_modules/.bin/ を付けて書く人もいる
gulpなどもnpm runを通して実行すると、package.jsonで指定されたバージョンのgulpを実行できる

nodeの慣習
npm run build して test start で開発に必要な事はだいたいできるようにする
npmライブラリのソース読む時はとりあえずpackage.jsonのscriptsを見るとよい

npm-run-allと組み合わせると強いshokai

gulpよりもツールそれぞれに付属してるコマンドを直接使ったほうが楽な場合がある
もちろんgulpのままの方がいい場合もある
sassのビルドなど、いくつかをgulpからnpm run scriptに引っ越した(gyazz) shokai
1. まずgulpは npm run build から呼び出すようにする
2. 少しずつscriptsに移動させる
npm run scss とか npm run babel とか
npm run build で全て実行されるようにしておく
3. いつのまにかgulpfileがすっきりしている!!