npm run script
プログラムは書けないので、条件分岐はきびしい
例: NODE_ENV===production
の時はsourcemapを埋め込まない、など
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を見るとよい
gulpよりもツールそれぞれに付属してるコマンドを直接使ったほうが楽な場合がある
もちろんgulpのままの方がいい場合もある
sassのビルドなど、いくつかをgulpからnpm run scriptに引っ越した(gyazz)
1. まずgulpは npm run build
から呼び出すようにする
2. 少しずつscriptsに移動させる
npm run scss
とか npm run babel
とか
npm run build
で全て実行されるようにしておく
3. いつのまにかgulpfileがすっきりしている!!