在npm-scripts中传递环境variables
我有一个package.json脚本键中的以下(简化)内容:
... scripts: { "start": "NODE_ENV=${NODE_ENV:=production} node start-app.js", "poststart": "echo $NODE_ENV" } ...
从命令行我可以运行:
npm start
这将运行我的start-app.js脚本,并将process.env.NODE_ENV环境variables设置为“production”。 看到这里的语法解释。
开始后会自动运行,如此处所述。
但poststart不会“inheritance”NODE_ENV shell环境variables,所以echo命令不会回显任何内容。
我的产品代码稍微复杂一些,但是我试图完成的是将NODE_ENVvariables从“起点”传递给依赖脚本。 任何build议/最佳做法如何做到这一点?
我不想在poststart中硬编码NODE_ENV,因为我可能想这样做:
NODE_ENV=development npm start
我希望每一个“下链”都inheritance相同的环境。
你有几个select:
- better-npm-run ,它可以分别为每个命令定义一个
env
- 您可以像下面这样连接npm的命令:
"start": "NODE_ENV=${NODE_ENV:=production} node start-app.js && echo $NODE_ENV"
- 在生产中使用像pm2一样的stream程pipe理器。 pm2可让您使用
NODE_ENV
等设置定义环境特定的json文件。 在我们公司,我们成功地运行了所有的应用程序在不同的环境下与pm2(同时具有相同的启动命令)
如果您使用的是小型的,请使用better-npm-run。 对于小的情况下,它工作正常。 不知何故,如果你有很多的命令,很难pipe理。 试试吧, 蝙蝠侠 。 很好地处理和处理很多与环境有关的问题
npm我-g batman-cli