同时不修改NODE_ENV变量

时间:2017-04-24 11:48:03

标签: node.js windows webpack

所以我正在使用webpack开发一个项目,并想在我的package.json上创建一个脚本,从那里运行开发和生产模式。我是Windows用户,并始终使用Concurrently同时运行多个终端任务。

我设置了这样的package.json脚本:

"scripts": {
    "start": "concurrently \"set NODE_ENV=\" \"webpack --watch\"",
    "build": "concurrently \"set NODE_ENV=production\" \"webpack\""
},

终端中的输出是:

set NODE_ENV= exited with code 0
Webpack is watching the files…
...

所以基本上webpack工作正常,但是没有创建/删除变量。两个命令都失败了。

如果我直接跑

set NODE_ENV=production

它有效,所以我有点困惑......

有什么想法吗?

非常感谢!

1 个答案:

答案 0 :(得分:1)

变化:

"start": "concurrently \"set NODE_ENV=\" \"webpack --watch\"",
"build": "concurrently \"set NODE_ENV=production\" \"webpack\""

为:

"start": "NODE_ENV= webpack --watch",
"build": "NODE_ENV=production webpack"

您无法在一个进程中更改环境,并希望在另一个进程中并行启动它。您只能在启动时更改子进程的env。子进程始终从父进程继承环境。

如果上述内容在Windows上不起作用,请使用cross-env

npm install --save-dev cross-env

并在package.json中使用:

"start": "cross-env NODE_ENV= webpack --watch",
"build": "cross-env NODE_ENV=production webpack"