6. webpack.DefinePlugin插件学习

DefinePlugin 介绍

DefinePlugin 允许创建一个在编译时可以配置的全局常量。

注意:定义在全局有用,并不是说变量是在window下面

使用场景例子

对开发环境和生产环境使用不同的配置非常有用。如在开发环境中输出日志,在生产环境中不输出日志。这就是 DefinePlugin 的用处,设置它,就可以忘记开发和发布构建的规则。

使用规则

  1. 每个传进 DefinePlugin 的键值都是一个标志符或者多个用 . 连接起来的标志符。
  2. 如果这个值是一个字符串,它会被当作一个代码片段来使用
  3. 如果这个值不是字符串,它会被转化为字符串(包括函数)。
  4. 如果这个值是一个对象,它所有的 key 会被同样的方式定义。
  5. 如果在一个 key 前面加了 typeof,它会被定义为 typeof 调用。

定义字符串的解决办法

因为这个插件直接执行文本替换,给定的值必须包含字符串本身内的实际引号。通常,有两种方式来达到这个效果

  1. 使用 双引号里面嵌套单引号,例如:’“production”’
  2. 或者使用 JSON.stringify(‘production’)

定义全局变量

new webpack.DefinePlugin({
	author: "'huangbiao'",
	project: "'webpack-study'",
	'window.date': "'20200120'",
	VERSION: JSON.stringify("5fa3b9")
}),

测试js 代码

// 通过webpack.DefinePlugin 插件,添加全局变量
console.log("author", author);
console.log("window.author", window.author);
console.log("project", project);
console.log("VERSION", VERSION);
console.log("window.date", window.date);


function parent () {
    document.getElementsByTagName("body")[0].innerHTML = "第一个webpack程序<br/>我改变了内容1"
}

export default parent;

结果

parent.js:3 author huangbiao
17:09:03.968 parent.js:4 window.author undefined
17:09:03.968 parent.js:5 project webpack-study
17:09:03.969 parent.js:6 VERSION 5fa3b9
17:09:03.969 parent.js:7 window.date 20200120
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值