npm-scriptsに関するメモ
最近npm-scriptsを書いていて知ったことなど。
run-script, run, ru
npm-scriptsを実行する場合は
$ npm run-script command
で実行するが、run-script
でなくともrun
やru
でも実行できる。
引数を渡す
npm 2.0.0からnpm-scriptsを実行する際に--
を付加することでnpm-scripts自体に引数を渡せる。
{
"private": true,
"scripts": {
"list": "ls"
}
}
$ npm ru ls
> @ list /path/to/dir
> ls
package.json
$ npm ru ls -- -l
> @ list /path/to/dir
> ls -l
total 8
-rw-r--r-- 1 sasaplus1 staff 59 11 29 22:20 package.json
余計な出力をしない
実行する際に-s
を渡すと余計な出力を抑止できる。これはnpm自体のloglevelを変更しているだけ。
純粋にコマンドの出力のみ出力されるようになるので複数のnpm-scriptsをパイプでつなぐこともできる。
$ npm -s ru list -- -l
total 8
-rw-r--r-- 1 sasaplus1 staff 59 11 29 22:20 package.json
{
"private": true,
"scripts": {
"build": "npm -s ru find | xargs npm -s ru concat -- | npm -s ru minify > index.min.js",
"find": "find ./sources -type f -name '*.js'",
"concat": "awk '{ print }'",
"minify": "uglifyjs -cm"
},
"devDependencies": {
"uglify-js": "*"
}
}
上記の例だと個々のコマンドは短くなったのだけど、コマンドをつなぐコマンドは余計に長くなった。分割のしすぎは良くない。