ばかおもちゃ本店:Youtube twitter:@sashimizakana Amazon.co.jpアソシエイト

2017年6月7日水曜日

npm-run-script実行時にwindowsとlinuxで統一的に環境変数を扱う

Node.jsでプログラム開発時なんかにnpm run scriptを利用することがよくある。で、開発中なのでデバッグ用の引数とか環境変数なんかを渡して実行することがあるのだけど、これはただのコマンドなので環境変数の指定の仕方はOSに依存する書き方になる。

Windowsのcmd.exeならset hoge=fuga&& node index.jsみたいな感じになるし、Linux系のshの場合はhoge=fuga node index.jsという書き方になる。PowerShellの場合また違うはずだけどよく知らない。

で、完全に実行や開発環境が同OSで固定されていればなんの問題もないのだけど、そうじゃないときもある。例えば、クライアントとサーバーがWindowsとLinuxで、同じスクリプトを利用するというようなときがある。もちろん、OSごとにscriptsに書いても良いんだけど、面倒くさい。で、調べてみるとcross-envというパッケージを使うのが定番らしい。

https://www.npmjs.com/package/cross-env

scriptの頭にcross-envを読んで、あとはshと同じ書き方で設定すれば、OS問わず環境変数を設定してくれるようになる。つまり、"cross-env hoge=fuga node index.js"とすればあとはcmd.exe上でも問題なく環境変数に設定してくれる。便利。