![](/img/trans.png)
[英]How can I choose the NODE_ENV in windows terminal without using npm?
[英]Passing NODE_ENV into the npm script for Windows 10
我在 Typescript 項目中使用webpack
。 我正在學習創建 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
在 Windows 中,我應該如何更改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"
這應該會觸發相應的腳本。
然而,這仍然沒有為用戶提供在設置 env 時運行通用 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
並且&
保留供將來使用。
像下面這樣更改你的package.json:
請注意,您必須更改所有webpack.common.js,webpack.production.js,webpack.development.js
webpack.common.js:
"build": "set NODE_ENV=development && webpack --config webpack.common.js"
webpack.production.js:
"build": "set NODE_ENV=production && webpack --config webpack.production.js"
webpack.development.js:
"build": "set NODE_ENV=development && webpack --config webpack.development.js"
也許這樣的事情可以幫到你
SET NODE_ENV=production& webpack -p --mode=production
如果它不起作用,你可以在你的webpack中設置它
webpack.dev.js
plugins: [
new webpack.DefinePlugin({
'process.env': {
'NODE_ENV': JSON.stringify('development')
}
})
],
webpack.prod.js
plugins: [
new webpack.DefinePlugin({
'process.env': {
'NODE_ENV': JSON.stringify('production')
}
})
]
我能夠根據@ambienBeing的評論來解決這個問題。 不過這里有一些注意事項:
&&
不會在工作PowerShell
,但在Works cmd
而不是$NODE_ENV
我需要在"scripts"
部分中調整%NODE_ENV%
"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")
。
我可以在控制台中看到相應的字符串兩次打印:來自echo
1 x和來自文件的1 x
cmd
而不是PowerShell
時,這與VS Code完美配合
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.