Grunt使うほどでもないんだけどなー、でもnpm-scriptsに書くには横に長くなるしなー、と思っていたらアドバイスをもらいました。
で、オレ的Gruntに対する最新の気持ちのbin/build.sh
というところを見たらシェルスクリプトに直にbrowserify
と書いてあって、あれ、なんでbrowserify
直接実行できるの、と思ってnpm-scripts実行時の環境変数について調べてみたりしました。
{
"scripts": {
"start": "env"
}
}
調べてみました、と言ってもこれだけなのですけど。
$ npm start
で出力させてみると、PATH
の先頭に/Users/sasaplus1/.nodebrew/node/v0.10.28/lib/node_modules/npm/bin/node-gyp-bin
(これはnodebrew
を使ってるからかな)と/Users/sasaplus1/path/to/package/node_modules/.bin
が追加されてたり、
npm_config_*
が追加されてたりしました。
PATH
に/node_modules/.bin
が追加されてたからローカルにインストールしたモジュールでもscripts
内ではモジュール名だけでコマンドが実行できてたんですね。(npm-scripts
を実行するときnpmがローカルにインストールしたモジュールのパスを勝手に解決してるのだと思っていた)
あとnpm_config_*
系の環境変数も渡されるのでpackage.json
にいろいろ設定値を書いて、シェルスクリプトに渡す、なんて使い方もできますね。使い方によってはかなり便利なんじゃないかなーと思ったのでした。まる。
ちなみに
$ npm bin
とすると、そのディレクトリから近いnode_modules/.bin
までの絶対パスを出力してくれる、というのを思い出したので一応。
ちゃんとしたnode_modules/.bin
までのパスだったり、node_modules
がない場合はカレントディレクトリに対してnode_modules/.bin
を付加しただけのパスだったりするみたい?