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を付加しただけのパスだったりするみたい?