webpack DefinePlugin 实战
文章目录
webpack 的 DefinePlugin 是经常使用的一个 plugin。它常常用来定义变量以区分环境。它的用法如下:
|
|
一开始我以为它只是把这些变量挂在了全局变量下面,使得代码中能直接用变量,但是经过仔细查看,并不是这样的。
工作原理
DefinePlugin
是一个 编译期 的变量替换工具。这意味它在 webpack
编译阶段就已完成了变量的替换工作,不会污染到全局变量。
这意味着,它是简单的变量替换为值,如上面的例子中,debug
变量 会被替换成 false
:
所以经常可以看到使用 JSON.stringify
将想要替换的内容包裹一层。
Usage
利用这个特性和 uglify
可以实现 feature 等特性。例如关闭某个 feature
,就将其设为 false
,最后 uglify
时就会将 dead code
自动剪除。
|
|
编译后代码:
|
|
使用 eslint 时未声明的变量会报错,可在文件开头添加 /* global isDebug */ 设置全局变量的方式绕过
错误用法:
|
|
Reference
文章作者 sdvcrx
上次更新 2017-07-22