这个插件是用来定义全局变量的

//webpack.config.js
var webpack = require('webpack');
var path = require('path');module.exports = {entry: {index: "./js/index.js"},output: {path: "./dist/",filename: "js/[name].js",chunkFilename: "js/[name].js"},plugins: [new webpack.DefinePlugin({SOMETHINE: 'This is something we needed.'})]
};//index.js
console.log('SOMETHINE=',SOMETHINE);

编译完结果如下:

可以看到代码中 SOMETHINE 被直接替换为 This is something we needed. 但是我们的本意中 SOMETHINE 是一个字符串,而直接替换后却不是一个字符串。

如何换成字符串

SOMETHINE: '"This is something we needed."'
//or借助JSON.stringify
SOMETHINE: JSON.stringify('This is something we needed.')

借助JSON.stringify不仅可以处理字符串,还可以处理Object中的字符串和Array

//webpack.config.jsplugins: [new webpack.DefinePlugin({OBJ: JSON.stringify({"key1": "this is value"}),OBJ2: {"key1": "this is value"},OBJ3: {"key1": "'this is value'"},ARRAY: JSON.stringify(["value1", "value2"]),ARRAY2: ["value1", "value2"],ARRAY3: ["'value1'", "'value2'"],
// Number 和 Boolean 两种变量类型NUMBER: 12,BOOL: true})
]//index.js
console.log('OBJ=', OBJ);//  OBJ= { key1: 'this is value' }
console.log('OBJ2=', OBJ2);//报错  console.log('OBJ2=', Object({"key1":this is value}));
console.log('OBJ3=', OBJ3);// OBJ3= { key1: 'this is value' }
console.log('ARRAY=', ARRAY);// ARRAY= [ 'value1', 'value2' ]
console.log('ARRAY2=', ARRAY2);// ARRAY2= {"0":value1,"1":value2}  value1 is not defined
console.log('ARRAY3=', ARRAY3);// ARRAY3= { '0': 'value1', '1': 'value2' }
console.log(NUMBER,BOOL);// 12 true

实际应用

在实际使用中, DefinePlugin 最为常用的用途就是用来处理我们开发环境和生产环境的不同。
比如一些 debug 的功能在生产环境中需要关闭、开发环境中和生产环境中 api 地址的不同。

// webpack.dev.conf.js
var config = require('../config')
...
new webpack.DefinePlugin({'process.env': config.dev.env
})// webpack.prod.conf.js
var config = require('../config')
...
new webpack.DefinePlugin({'process.env': config.build.env
})// index.js
if ('development' === process.env.NODE_ENV) {// 开发环境下的逻辑
} else {// 生产环境下
}

webpack.DefinePlugin使用介绍相关推荐

  1. Webpack 的简单介绍

    本文介绍了一些 webpack 的核心概念以及一些概念术语,并对核心配置做了一些简单的用法讲解.建议刚刚接触 Webpack 的朋友可以先了解一下.想了解更多 Webpack 使用以及配置的话可以参考 ...

  2. [转]WebPack 常用功能介绍

    概述 Webpack是一款用户打包前端模块的工具.主要是用来打包在浏览器端使用的javascript的.同时也能转换.捆绑.打包其他的静态资源,包括css.image.font file.templa ...

  3. WebPack常用功能介绍

    概述 Webpack是一款用户打包前端模块的工具.主要是用来打包在浏览器端使用的javascript的.同时也能转换.捆绑.打包其他的静态资源,包括css.image.font file.templa ...

  4. webpack2教程--1webpack的安装和webpack.config.js介绍

    之前都是gulp之类的,现在都什么时代了!是时候学习webpack,现在都webpack4.x了,没办法,我这种弱鸡就只能webpack2开始. webpack官网文件 前提 安装node,安装成功, ...

  5. webpack之DefinePlugin使用

    DefinePlugin是webpack注入全局变量的插件,通常使用该插件来判别代码运行的环境变量.在使用该插件需要注意的是,如果在该插件配置了相关的参数,必须要源码中使用,webpack才会注入.例 ...

  6. Webpack 打包 Javascript 详细介绍

    本篇我们主要介绍Webpack打包Javascript.当然,除了可以打包Javascript之外,webpack还可以打包html.但是这不是我们本篇的重点.我们可以参考 Webpack HTML ...

  7. Webpack 最佳实践总结(一)

    好久没写文章,这次预计会带来3篇的 Webpack 系列文章,将会在这几天内更新完. Webpack3 自今年6月20日正式发布而来,给我们带来Scope Hoisting和Magic Comment ...

  8. 为什么我们要做三份 Webpack 配置文件

    时至今日,Webpack 已经成为前端工程必备的基础工具之一,不仅被广泛用于前端工程发布前的打包,还在开发中担当本地前端资源服务器(assets server).模块热更新(hot module re ...

  9. vue-cli的webpack模板项目配置文件分析

    由于最近在vue-cli生成的webpack模板项目的基础上写一个小东西,开发过程中需要改动到build和config里面一些相关的配置,所以刚好趁此机会将所有配置文件看一遍,理一理思路,也便于以后修 ...

最新文章

  1. 【Java8新特性】关于Java8的Stream API,看这一篇就够了!!
  2. CentOS-7-64bit 配置Apache + MySQL + PHP
  3. 官方数据:5次SDN大会的背后
  4. Wireshark的入门使用
  5. LeetCode:Minimum Path Sum(网格最大路径和)
  6. 飘逸的python - hack输出流便于调试
  7. 英国脱欧:3/4的技术初创公司将面临严峻时期
  8. jquery+css实现菜单收缩效果并适应多种浏览器与移动平台
  9. 立通信电杆——水泥杆
  10. UML 用例图符号含义
  11. 51nod 1163 最高的奖励(超级经典贪心)
  12. 如何在数据库mysql中储存图片
  13. MyBatis(一)—— 2h学完这篇就可以入门mybatis啦
  14. axios 登录后设置header,vue+axios 全局添加请求头和参数操作
  15. 洞察问题本质的思维,你知道吗?
  16. php mysql字符串截取比较读取_MySQL_Mysql字符串截取函数SUBSTRING的用法说明,感觉上MySQL的字符串函数截取 - phpStudy...
  17. 吃灰树莓派应用之HomeAssistant安装与Tuya插件应用
  18. Ubuntu server 14.04 启用root用户并设置密码
  19. 365赚钱宝养猫小程序程序源码下载
  20. 前端 | 个人主页项目HTML页面解析

热门文章

  1. Project interpreter not specified(eclipse+pydev)
  2. logistic回归 简介_金融专业进!逻辑回归模型简述
  3. LeetCode题组:第121题-买卖股票的最佳时机
  4. LeetCode-剑指 Offer 04. 二维数组中的查找
  5. Edit Distance Python源码及支持包的实现
  6. 【Android-tips】 Unable to execute dex: Multiple dex files define 解决方法
  7. 美团配送资金安全治理之对账体系建设
  8. 深入理解 Java G1 垃圾收集器--转
  9. A XSS filter for Java EE web apps--转载
  10. 【风险管理】金融业务风控相关框架