LoginSignup
13
13

More than 5 years have passed since last update.

npm-scripts実行時の環境変数について

Last updated at Posted at 2014-06-01

Grunt使うほどでもないんだけどなー、でもnpm-scriptsに書くには横に長くなるしなー、と思っていたらアドバイスをもらいました。

で、オレ的Gruntに対する最新の気持ちbin/build.shというところを見たらシェルスクリプトに直にbrowserifyと書いてあって、あれ、なんでbrowserify直接実行できるの、と思ってnpm-scripts実行時の環境変数について調べてみたりしました。

package.json
{
  "scripts": {
    "start": "env"
  }
}

調べてみました、と言ってもこれだけなのですけど。

Terminal
$ 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にいろいろ設定値を書いて、シェルスクリプトに渡す、なんて使い方もできますね。使い方によってはかなり便利なんじゃないかなーと思ったのでした。まる。


ちなみに

Terminal
$ npm bin

とすると、そのディレクトリから近いnode_modules/.binまでの絶対パスを出力してくれる、というのを思い出したので一応。
ちゃんとしたnode_modules/.binまでのパスだったり、node_modulesがない場合はカレントディレクトリに対してnode_modules/.binを付加しただけのパスだったりするみたい?

13
13
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
13
13