我有一个package.json,脚本键中包含以下(简化)内容:
...
scripts: {
"start": "NODE_ENV=${NODE_ENV:=production} node start-app.js",
"poststart": "echo $NODE_ENV"
}
...
Run Code Online (Sandbox Code Playgroud)
从命令行我可以运行:
npm start
Run Code Online (Sandbox Code Playgroud)
这将运行我的start-app.js脚本并将process.env.NODE_ENV环境变量设置为"production".请参阅此处获取语法说明.
如上所述启动后会自动开始运行后这里.
但是,poststart不会"继承"NODE_ENV shell环境变量,因此echo命令不会回显任何内容.
我的生产代码有点复杂,但我想要完成的是将NODE_ENV变量从"起点"传递给依赖脚本.关于如何做的任何建议/最佳实践?
我不想在poststart中硬编码NODE_ENV,因为我可能想要:
NODE_ENV=development npm start
Run Code Online (Sandbox Code Playgroud)
我希望每一个"沿着链条"继承同样的环境.
输入时会npm run <command>怎样?是<command>传递给sh shell的方法,例如:
sh -c <command>
Run Code Online (Sandbox Code Playgroud)
在外壳程序中添加了其他局部变量,即node_modules/.bin?的路径。
我认为npm仅可通过使用node在JavaScript Universe中工作,但似乎还有很多事情要做。如何&与&&被处理的?是globstar安全使用?