我可以从npm脚本中引用shell变量吗?

时间:2016-05-24 17:08:42

标签: node.js shell npm sh

我有一个npm脚本来启动webpack开发服务器,但首先是我的环境设置 -

在我的.zshrc - export DEV_SERVER_PORT=8001

echo返回预期结果

>echo $DEV_SERVER_PORT
8001

这是我从package.json通过npm run

运行的脚本
webpack-dev-server --inline --hot --port 8001

这可以通过npm run -

正确执行
echo $DEV_SERVER_PORT

结果:8001

这会通过npm run -

产生令人失望的结果
 webpack-dev-server --inline --hot --port $DEV_SERVER_PORT

结果webpack-dev-server --inline --hot --port $DEV_SERVER_PORT

2 个答案:

答案 0 :(得分:1)

您的问题中报告了zsh的以下结果:

>declare -p DEV_SERVER_PORT
typeset DEV_SERVER_PORT=8000

...表示您的shell变量实际上未导出,因此在子进程的环境中不可用。

运行以下命令:

export DEV_SERVER_PORT

然后,您应该看到以下内容:

>declare -p DEV_SERVER_PORT
typeset -x DEV_SERVER_PORT=8000

-x表示设置了导出标志,并且在调用的任何子进程中设置了此变量(对其进行了任何更改)。

答案 1 :(得分:0)

您需要使用process.env。这是一个包含所有进程的环境变量的对象。例如,如果您定义了环境变量PORT,则可以使用以下方法访问它:

process.env.PORT

可能需要将值转换为正确的类型。 process.env始终包含值作为字符串,因此 - 例如对于端口 - 您可能需要将值转换为数字。

所以你最终得到的东西如下:

const port = process.env.PORT - 0;