【发布时间】:2016-09-22 00:56:00
【问题描述】:
我有一个 npm 脚本来启动 webpack 开发服务器,但首先,我的环境设置 -
在我的.zshrc - export DEV_SERVER_PORT=8001
echo 返回预期结果
>echo $DEV_SERVER_PORT
8001
这是我通过 npm run 从 package.json 运行的脚本
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
【问题讨论】:
-
请更详细地展示您尝试过的内容,包括您如何将所需的值导出到环境中。一个 MCVE 将是理想的(也就是说,一个完整且可验证的复制器,根据 stackoverflow.com/help/mcve)。
-
...顺便说一句,系统和shell使用全大写名称;它是保留给应用程序使用的小写 环境变量名称(或更准确地说,是包含至少一个小写字符的名称)。请参阅pubs.opengroup.org/onlinepubs/009695399/basedefs/… 的相关规范,第四段。
-
...一般来说,答案介于“是”和“非常是”之间。从 npm 通过
system()调用的 shell 脚本,它只是像往常一样"$varname";对于原生 JavaScript 代码,它是process.env.varname。但是常规 shell 变量和环境变量之间的区别在这里很关键——如果你没有将它导出到环境中,它就不会存在。 -
主要问题是 webpack cli 似乎并不想本机接受 env vars 作为配置。虽然许多节点 CLI 会这样做,但无论出于何种原因,它们都不会这样做。查看我的“可能重复”链接,看看这是否适合您,如果不适合,请更新您的问题。