在angular2中使用process.env.NODE_ENV和process.env.ENV变量的原因是什么?

时间:2016-06-19 12:59:50

标签: node.js angular

我开始学习angular2,我在示例中看到它们覆盖了配置文件中的process.env.NODE_ENV和process.env.ENV变量。此代码来自this example

的webpack.prod.js
// webpack.prod.js
const ENV = process.env.NODE_ENV = process.env.ENV = 'production';

重写process.env.NODE_ENV和process.env.ENV变量的原因是什么。 nodejs或angular 2中是否存在使用此变量的内容?

2 个答案:

答案 0 :(得分:2)

最简单的用例之一是定义dev模式或prod模式,引导app:

if ( 'development' === ENV && HMR === true ) {
    // activate hot module reload
    let ngHmr = require( 'angular2-hmr' );
    ngHmr.hotModuleReplacement( main , module );
} else {
     enableProdMode(); // which run Angular2 app in production mode 
}

所以一般来说,我们可以在很多不同的场景中使用它们,你想把一个变量从服务器(即命令行)传递到你的app。

答案 1 :(得分:1)

这不仅仅是关于angular2的事情。当您想要从服务器到客户端公开env变量时,通常最好的做法是使用稍微不同的名称映射它们,并仅显示与客户端有关的项目。

这样就不能简单地看看你的API端点暴露了env vars并锻炼了你所有的服务器环境。

在这个特定的例子中,从域的角度来看也是有意义的。尽管process.env.ENV可能与NODE_ENV具有相同的值,但它不代表node.js的环境,而是表示angular正在运行的ENV。

从那时起,它实际上是process.env.NG_ENV或process.env.ENV