Sha*_*sai 8 javascript environment-variables node.js webpack npm-scripts
我webpack在打字稿项目中使用。我正在学习创建 3 个文件的教程webpack:
webpack.common.jswebpack.production.jswebpack.development.js在本教程中package.json,"scripts"秒数如下:
"build": "webpack --config webpack.$NODE_ENV.js"
Run Code Online (Sandbox Code Playgroud)
我一直在研究以下 SE 查询来设置NODE_ENVWindows 10。
我在 PowerShell 中执行的位置:
$env:NODE_ENV="development"
Run Code Online (Sandbox Code Playgroud)
但是,一旦我执行npm run build脚本仍然采用$NODE_ENV字符串并且不替换值。
cross-env如果这对我不起作用,我可能会转向稍后,但我想在 PowerShell 中尝试环境变量。
什么应该是等效的命令:
NODE_ENV=development npm run build
NODE_ENV=production npm run build
Run Code Online (Sandbox Code Playgroud)
在Windows和我应该如何改变scripts,我package.json即 $NODE_ENV接受变量?
cross-envcross-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"
Run Code Online (Sandbox Code Playgroud)
这应该会触发相应的脚本。
然而,这仍然没有为用户提供在设置 env 时运行通用 npm 脚本命令的灵活性。变量上飞
在某些示例中,查询建议执行以下操作:
set NODE_ENV=production&& npm run build
Run Code Online (Sandbox Code Playgroud)
但这在 PowerShell 中失败并出现以下错误:
"build": "webpack --config webpack.$NODE_ENV.js"
Run Code Online (Sandbox Code Playgroud)
并&保留供将来使用。
我能够根据@ambienBeing 的评论解决这个问题。但是,这里有一些注意事项:
&& 不会在工作PowerShell,但WORKS在cmd而不是$NODE_ENV我需要适应%NODE_ENV%的"scripts"部分
"build": "echo %NODE_ENV% && webpack --config webpack.%NODE_ENV%.js"
Run Code Online (Sandbox Code Playgroud)在执行以下操作时:
set NODE_ENV=production&&npm run build
Run Code Online (Sandbox Code Playgroud)
脚本被正确执行。
为了肯定的是,我加入console.log("production")以及console.log("development")在相应的webpack.x.js文件
我可以看到两次在控制台中打印的相应字符串:文件中的 1 xecho和 1 x
cmd而不是PowerShell| 归档时间: |
|
| 查看次数: |
7706 次 |
| 最近记录: |