2016-09-30 87 views
0

我想在我的package.json中执行一些脚本,它将设置我的应用程序可以使用的环境变量。 我需要的是这样的(在我的package.json)node - package.json:如何执行设置环境变量的脚本

"scripts": { 
    "dev": "set-env-vars.sh && webpack-dev-server --hot --inline & cd server && NODE_ENV=development node app.js", 
    }, 

这是我set-env-vars.sh文件:

#!/bin/bash 
export ENV_MONGODB_URI="mongodb://localhost:27017/mydb" 
... 

我知道我需要使用源代码或。将我的变量导出到shell中,这在shell中工作,但不是在我的package.json dev-script中。

任何解决方案,以实现这一目标?谢谢。

回答

1

问题出现在单个&符号(&)之后webpack-dev-server调用。尾随符号指示shell在后台运行命令。在实践中,你的命令将被分成两部分,它们将在异步的shell中被调用。如果使用连字符(&)故意,那么你应该源ENV在这样两个部分瓦尔:

. ./set-env-vars.sh && webpack-dev-server --hot --inline & . ./set-env-vars.sh && cd server && NODE_ENV=development node app.js 

所以,从变量set-env-vars.sh将同时适用于的WebPack-dev的-server节点

或者,如果你想同步运行:

. ./set-env-vars.sh && webpack-dev-server --hot --inline && cd server && NODE_ENV=development node app.js 
+0

的问题是,当我加'.'或'源'里面的脚本,我已收到此: 'sh:行0:。:set-env-vars.sh:文件未找到' – CodeBy

+0

我认为你应该使用'./set-env-vars.sh' 'set-env-vars.sh'从当前目录执行文件。 – teq

+0

我编辑了相应的答案 – teq