プラットフォーム全体で環境変数を設定および使用するスクリプトを実行する
注意:Cross-ENVは引き続きうまく機能しますが、メンテナンスモードです。新しい機能は追加されません。深刻で共通ケースのバグのみが修正され、node.jsでのみ最新の状態に保たれます。もっと詳しく知る
NODE_ENV=productionで環境変数を設定すると、ほとんどのWindowsコマンドプロンプトが窒息します。 (例外は、ネイティブバッシュを使用するWindows上のBashです。)同様に、WindowsとPosixコマンドが環境変数を利用する方法に違いがあります。 Posixを使用すると、 $ENV_VAR使用し、Windowsで%ENV_VAR%を使用します。
cross-envにより、プラットフォームに環境変数を適切に設定したり使用したりすることを心配せずに、単一のコマンドを作成できます。 POSIXシステムで実行されている場合と同じように設定するだけで、 cross-env適切に設定されます。
cross-env対cross-env-shellこのモジュールは、ノードにバンドルされたNPMを介して配布され、プロジェクトのdevDependenciesの1つとしてインストールする必要があります。
npm install --save-dev cross-env
警告!マルウェアのインストールを誤ってインストールしないように、パッケージをインストールしているときに正しく綴ることを確認してください
注:Cross-ENVのバージョン7は、node.js 10以降のみをサポートしています。Node.js8以下で使用するバージョン6
npm install --save-dev cross-env@6
これをNPMスクリプトで使用します。
{
"scripts" : {
"build" : " cross-env NODE_ENV=production webpack --config build/webpack.config.js "
}
}最終的に、実行されるコマンド( cross-spawnを使用)は次のとおりです。
webpack --config build/webpack.config.js
NODE_ENV環境変数はcross-envによって設定されます
一度に複数の環境変数を設定できます。
{
"scripts" : {
"build" : " cross-env FIRST_ENV=one SECOND_ENV=two node ./my-program "
}
}また、コマンドを複数のコマンドに分割したり、環境変数宣言を実際のコマンド実行から分離することもできます。あなたはこのようにそれを行うことができます:
{
"scripts" : {
"parentScript" : " cross-env GREET= " Joe " npm run childScript " ,
"childScript" : " cross-env-shell " echo Hello $GREET " "
}
} childScript実行する実際のコマンドを保持し、 parentScript使用する環境変数を設定します。次に、ChildScriptを実行する代わりに、親を実行します。これは、異なるENV変数を使用して同じコマンドを起動する場合、または環境変数がすべてを1行にするには長すぎる場合に非常に便利です。また、通常、 %GREET%であることが必要なWindowsでも、 $GREET Env var syntaxを使用できることを意味します。
奇数のバックスラッシュでドル記号の前に先行する場合、式のステートメントは置き換えられません。これは、JSON文字列の脱出が行われた後のバックスラッシュを意味することに注意してください。 "FOO=\$BAR"交換されません。 "FOO=\\$BAR"交換されます。
最後に、JSON文字列を渡す場合(たとえば、TS-Roaderを使用する場合)、次のように実行できます。
{
"scripts" : {
"test" : " cross-env TS_NODE_COMPILER_OPTIONS={ \" module \" : \" commonjs \" } node some_file.test.ts "
}
}二重引用符(")と単一の引用(')がない前に、トリプルバックスラッシュ(\)に特に注意してください。これらの条件は両方とも、WindowsとUNIXの両方で作業するために満たさなければなりません。
cross-env対cross-env-shell cross-envモジュールは、 cross-envとcross-env-shell 2つのビンを公開します。最初のものはcross-spawnを使用してコマンドを実行し、2番目のものはノードのspawnのshellオプションを使用します。
cross-env-shellの主なユースケースは、1つのコマンドではなく、インラインシェルスクリプト全体に環境変数を設定する必要がある場合です。
たとえば、環境変数をシリーズで複数のコマンドに適用する場合は、それらを引用符で包み、 cross-envの代わりにcross-env-shellを使用する必要があります。
{
"scripts" : {
"greet" : " cross-env-shell GREETING=Hi NAME=Joe " echo $GREETING && echo $NAME " "
}
}経験則は次のとおりです。解釈したい特別なシェル文字を含むコマンドをcross-envに渡す場合は、 cross-env-shellを使用します。それ以外の場合はcross-envに固執します。
Windowsでは、プログラム内の信号イベントを処理する場合は、 cross-env-shell使用する必要があります。その一般的なケースは、コマンドラインインターフェイスでCtrl + C押すことで呼び出されたSIGINTイベントをキャプチャしたい場合です。
npmデフォルトでcmdを使用しているため、コマンドの代替をサポートしていないため、それを活用する場合は、 .npmrcを更新してscript-shellをPowerShellに設定する必要があります。詳細はこちらをご覧ください。
私はもともと、Angular-FormlyのNPMスクリプトで抱えていた問題を解決するためにこれを作成しました。これにより、Windowsユーザーにとってプロジェクトへの貢献がはるかに簡単になりました。
env-cmd -代わりにファイルから環境変数を読み取ります@naholyr/cross-envデフォルト値の設定をサポートしたcross-env 貢献したいですか?良い最初の問題ラベルを探してください。
バグ、不足しているドキュメント、または予期しない動作について問題を提出してください。
バグを参照してください
このプロジェクトはメンテナンスモードであり、新機能のリクエストは考慮されません。
もっと詳しく知る
これらの人々に感謝します(絵文字キー):
ケントC.ドッズ ? | Ya Zhuang ? | ジェームズ・ハリス | Compumike08 ? | ダニエル・ロドリゲス・リベロ ? | ジョナス・ケインホルツ ? | ヒューゴウッド ? |
Thiebaud Thomas ? | ダニエル・レイ・ロペス | アミラ・ウェリヒンダ ? | ポール・ベッツ ? | ターナー・ヘイズ ? | スハス・カランス | スヴェン |
D.ニコラス・ロペス・ゼラヤ | ヨハン・ヘルナンデス | ジョーダン・ニールソン ? | ジェイソンクック | BIBO5088 | エリック・ベリー ? | マイケル・デ・ボーイ |
ラウリ・エスコラ | Devuxer | ダニエル |
このプロジェクトは、全委員会の仕様に従います。あらゆる種類の貢献を歓迎します!
注:これはプロジェクトに遅れて追加されました。このプロジェクトに何らかの形で貢献した場合は、
CONTRIBUTING.mdの指示に従ってリストに追加するようにプルリクエストを行ってください。
mit