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上でも問題なく環境変数に設定してくれる。便利。