【发布时间】:2016-10-14 08:16:19
【问题描述】:
我正在尝试设置一个标志来通知我的代码是处于生产还是开发阶段。到目前为止,我已经看到:
在 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
Powershell:
$env:NODE_ENV="production"
我想我只是感到困惑,因为默认情况下我目前有大约 4 个这样的设置。这些究竟是如何相互作用的?他们都指的是同一个变量吗?我应该只有其中之一吗?哪些会覆盖其他?
如果只有一个点来设置它,我真的更喜欢,因为似乎每个模块都允许您指定它,因此,我对它的实际设置位置感到困惑。另外,无论如何也可以在客户端访问此标志还是仅在服务器端访问?
【问题讨论】:
-
设置
environment variable似乎是不错的方法,并且独立于包、模块或IDE。 -
@MukeshSharma:那么我会删除此处列出的所有其他内容吗?我认为
React需要一个 webpack 才能在客户端的生产环境中运行。 -
是的,但是
webpack再次设置了在服务器上运行的node环境。这里也讨论过。 github.com/gaearon/react-transform-boilerplate/issues/54 -
@ChronBag 考虑到 VS 和 Powershell 引用,您似乎正在 Windows 上运行。您是否打算在 IISNode 中运行它?如果是这样,您实际上将在您的
Web.config中设置您的NODE_ENV。 -
@peteb:我使用 Windows 进行开发,使用 Linux 进行生产,这样只会增加更多的混乱。
标签: javascript node.js coding-style environment-variables