【发布时间】:2016-09-05 13:34:43
【问题描述】:
我有一个 package.json,在 scripts 键中有以下(简化的)内容:
...
scripts: {
"start": "NODE_ENV=${NODE_ENV:=production} node start-app.js",
"poststart": "echo $NODE_ENV"
}
...
我可以从命令行运行:
npm start
这将运行我的 start-app.js 脚本并将 process.env.NODE_ENV 环境变量设置为“生产”。语法解释见here。
按照here 的描述,poststart 将在启动后自动运行。
但是 poststart 不会“继承” NODE_ENV shell 环境变量,因此 echo 命令不会回显任何内容。
我的生产代码稍微复杂一些,但我想要完成的是将 NODE_ENV 变量从“起点”传递到依赖脚本。关于如何做到这一点的任何建议/最佳实践?
我不想在启动后硬编码 NODE_ENV,因为我可能想做:
NODE_ENV=development npm start
我希望每个“下游”都继承相同的环境。
【问题讨论】:
-
来自what I see,他的 package.json 字段被附加到 npm_package 前缀_上,所以你可能想说
npm_package_node_env。 -
运行多个命令时,您应该
export变量。export NODE_ENV=something
标签: node.js shell npm environment-variables