如何用webpack定义环境变量以便在代码中区分

在不同的环境下,我们需要制定不同的配置。比如编译到生产环境,我们会指定生产环境的配置,通常我们会用process.env.NODE_ENV为production。浏览器中是没有process这个变量,是无法直接访问的。有时我们会在前端代码逻辑需要知道当前是什么环境。如果是生产环境,我们就调用生产环境相关的url,否则调用qa环境的。之前唯一的办法是在编译的时候,手动设定一个全局的参数,在开发环境的时候,再手动设定另外一个。这样子很容易因为人工疏忽导致出错。比如明明编译到了生产环境,但是因为参数忘了手动改,所以浏览器读取到的是qa环境。
为了避免这种低级的错误,webpack有个插件可以直接设定和process.env.NODE_ENV的值。插件是webapck.definePlugin
调用方法

new webpack.DefinePlugin({
      'process.env': 'pro'
    })

然后在前端代码中这样调用。

console.log("process.env", process.env)

代码部署后,页面执行到该处就会打印出pro值。但是如果你在浏览器控制台访问process.env,仍然访问不到。
我分析了一下,原来是在编译到时候,就把process.env整体替换为'pro'值了。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Swift1> Swift和OC的区别1.1> Swift没有地址/指针的概念1.2> 泛型1.3> 类型严谨 对...
    cosWriter阅读 11,144评论 1 32
  • 第一章:编译和安装SCons第二章:简单编译第三章:编译相关的一些事情第四章:编译和链接库文件第五章:节点对象第六...
    仙灵儿阅读 12,020评论 0 3
  • 以下文章转载自知乎,暗灭-京华九月秋近寒,浮沉半生影长单. 暗灭 京华九月秋近寒,浮沉半生影长单 10,850 人...
    ve追风_685b阅读 4,136评论 1 15
  • 原链接:http://www.ibm.com/developerworks/cn/java/j-jni/ 使用 J...
    王朋6阅读 7,954评论 0 8
  • 把时间当作朋友 醒悟! 真理往往是简洁的。 ____艾萨克.牛顿 ...
    散步的蜗蜗阅读 95评论 1 0