TypeScriptプロジェクトでwebpack
を使用しています。私は tutorial に従っており、3つのwebpack
ファイルを作成しました。
webpack.common.js
webpack.production.js
webpack.development.js
チュートリアルのpackage.json
内の"scripts"
秒には、以下があります。
"build": "webpack --config webpack.$NODE_ENV.js"
私は 以下のSEクエリ を調べて、Windows 10のNODE_ENV
を設定しています。
PowerShell内で実行する場所:
$env:NODE_ENV="development"
ただし、npm run build
を実行すると、スクリプトは$NODE_ENV
を文字列として受け取り、値を置き換えません。
これでうまくいかない場合は、後でcross-env
に移行する可能性がありますが、PowerShellで環境変数を試してみたいと思います。
同等のコマンドは次のとおりです。
NODE_ENV=development npm run build
NODE_ENV=production npm run build
ウィンドウでは、package.json
のscripts
をどのように変更すればよいですか。 $NODE_ENV
変数を受け入れますか?
cross-env
の使用以下を実行することにより、cross-env
を使用して同様のことを実現できます。
npm i --save-dev cross-env
"scripts"
内に追加:
"build-dev": "cross-env NODE_ENV=development webpack --config webpack.%NODE_ENV%.js"
"build-prod": "cross-env NODE_ENV=production webpack --config webpack.%NODE_ENV%.js"
これにより、それぞれのスクリプトがトリガーされます。
ただし、これはユーザーが環境変数を設定している間に汎用のnpmスクリプトコマンドを実行する柔軟性をまだ提供していません。変数オンザフライ
クエリが次のようなことを提案する例があります:
set NODE_ENV=production&& npm run build
しかし、これはPowerShellで次のエラーで失敗します。
At line:1 char:24
+ set NODE_ENV=production&& npm run build-dev
+ ~~
The token '&&' is not a valid statement separator in this version.
+ CategoryInfo : ParserError: (:) [], ParentContainsErrorRecordException
+ FullyQualifiedErrorId : InvalidEndOfLine
また、&
は将来使用するために予約されています。
@ambienBeingからのコメントに基づいて、この問題を解決することができました。ただし、ここにいくつかの警告があります。
&&
_ DOES NOTはPowerShell
で機能しますが、[〜#〜] works [〜#〜]はcmd
で機能します_$NODE_ENV
_の代わりに_%NODE_ENV%
_の部分に_"scripts"
_を適用する必要がありました
_"build": "echo %NODE_ENV% && webpack --config webpack.%NODE_ENV%.js"
_
以下を実行すると:
_ set NODE_ENV=production&&npm run build
_
スクリプトは正しく実行されます。
念のため、それぞれの_webpack.x.js
_ファイルにconsole.log("production")
とconsole.log("development")
を追加しました
そして、私はコンソールに2回出力されたそれぞれの文字列を見ることができました:echo
からの1 xとファイルからの1 x
cmd
ではなくPowerShell
に変更すると、VSコードで完全に機能します。