困惑于有多less种方式设置NODE_ENV
我试图设置一个标志,通知我的代码是否在生产或开发。 到目前为止,我已经看到:
在VS Code的launch.json
:
{ "configurations": { "env": "NODE_ENV": "development" } }
在Node的package.json
:
{ "scripts": { "start": "NODE_ENV=production" } }
在Webpack的webpack.config.js
:
module.exports = { "plugins": new webpack.DefinePlugin({ 'process.env.NODE_ENV': '"production"' }) }
运行代码时:
set NODE_ENV=production && node app
NPM包:
https://www.npmjs.com/package/envify
电源shell:
$env:NODE_ENV="production"
我想我只是困惑,因为默认情况下,我有大约4目前设置。 这些如何相互作用? 他们都指的是相同的variables? 我应该只有其中之一吗? 哪些覆盖别人?
我真的更喜欢,如果只有一个点来设置,因为它似乎每个单一的模块可以让你指定它,结果,我很困惑,实际上是在哪里设置。 另外,有没有在客户端访问这个标志呢,还是只在服务器端?
在你指定的场景中, NODE_ENV
环境variables将被实际执行你的代码的进程初始化。 请参阅以下环境variableswikipedia摘录。
在所有类Unix系统中,每个进程都有自己独立的一组环境variables。 默认情况下,创build进程时,它会inheritance父进程的重复环境,除非父进程在创buildsubprocess时进行显式更改。 在API级别,这些更改必须在运行fork和exec之间完成。 或者,从诸如bash之类的命令shell中,用户可以通过env或使用
ENVIRONMENT_VARIABLE=VALUE <command>
表示法间接调用特定命令调用来更改特定命令调用的环境variables。 所有Unix操作系统的风格,DOS和Windows都有环境variables; 但是,它们并不都使用相同的variables名称。 正在运行的程序可以访问环境variables的值以进行configuration。
所以如果你使用NODE_ENV
来运行你的代码,那么在执行你的应用程序之前, NODE_ENV
实际上会分配NODE_ENV
环境variables。 它使用JSON文件来select可以使用env
属性指定环境variables的选项 。
简而言之,所有设置NODE_ENV
的方法NODE_ENV
都是相同的,只是归结于谁开始了你的过程。
由于环境variables对于一台机器( 环境 )来说是本地的,所以它们是在本地设置的,不能由客户端设置。