@subject: webpack mode

@author: leinov

@date: 2018-11-29

mode

webpack的 mode 配置用于提供模式配置选项告诉webpack相应地使用其内置的优化,mode有以下三个可选值

  • development
  • production
  • none

配置

1. 直接写在webpack.config.js配置中

module.exports = {
mode: 'production'
};

2. 作为webpack执行的参数

webpack --mode=production

通过上面的配置,我们就可以在业务代码中通过process.env.NODE_ENV拿到环境变量值,这里的process.env.NODE_ENV 要跟node的区分,这句等同于

new webpack.DefinePlugin({ "process.env.NODE_ENV": JSON.stringify("development") }),

如果我们在webpack执行命令和webpack配置文件里都没有写入mode配置,在执行webpack时会有如下提示:在没有配置的情况下默认显示production,这里我们建议大家配置,这样才有区分环境的意义

WARNING in configuration
The 'mode' option has not been set, webpack will fallback to 'production' for this value. Set 'mode' option to 'development' or 'production' to enable defaults for each environment.
You can also set it to 'none' to disable any default behavior. Learn more: https://webpack.js.org/concepts/mode/

使用

在开发和生产版本有很多不同之处,主要可分下面几种

  • 接口不同,后端返回的接口分线上开发
  • 编译结果不同,是否分离js,css,是否压缩等

通过mode的设置,我们就可以轻松对开发环境做严格的区分

1.运用于开发和生产的接口区分

package.json 配置


{
"scripts": {
"dev": "webpack-dev-server --mode=development --devtool inline-source-map --hot",
"build":"webpack --mode=production",
},
}

接口前缀根据编译的mode值区分

// 接口前缀配置
let baseUrl = "";
const env = process.env.NODE_ENV;
if(env === "production" || env === "none"){
baseUrl= "https://www.production.com/public/";
}else{
baseUrl= "https://www.development.com/public/";
}
export default baseUrl;

2.运用在编译打包

这是webpack4改进很重要的一点,开发者不需要太多配置,只需要设置好mode,webpack会根据mode在编译打包时执行不同的操作优化,具体参考官方文档

最新文章

  1. Unity 组件不常用知识备注
  2. PDB文件:每个开发人员都必须知道的
  3. java socket通讯(一) 入门示例
  4. AS3之正则表达式讲解
  5. hdu 5492 Find a path(dp+少量数学)2015 ACM/ICPC Asia Regional Hefei Online
  6. this 函数内部属性
  7. textChanged(*)重点
  8. 2 kNN-K-Nearest Neighbors algorithm k邻近算法(一)
  9. RPC(Remote Procedure Call Protocol)——远程过程调用协议
  10. git使用随笔
  11. js数组元素,获得某个元素的最大值。
  12. callee和斐波那契数列
  13. docker 容器内启动 sshd 启动报错
  14. day_6.6 py
  15. elasticsearch解决控制台中文乱码问题
  16. 使用 loop device 制作安装镜像
  17. php截取制定长度字符串
  18. BZOJ 3992 【SDOI2015】 序列统计
  19. mapreduce程序的按照key值从大到小降序排列
  20. 【python】Selenium隐藏控制台解决办法

热门文章

  1. 所有网卡常用信息获取集中展示(CentOS6 &CentOS7)
  2. java 调用c++程序实例
  3. Swift3 重写一个带占位符的textView
  4. WinAPI: sndPlaySound - 播放 wav 文件
  5. Android-Java多线程通讯(生产者 消费者)&10条线程对-等待唤醒/机制的管理
  6. 重写TreeView,多层级节点下批量显示图片,图片支持缩略图和文件名列表切换,支持调用者动态匹配选中,支持外界拖入图片并添加到对应节点下
  7. 回头探索JDBC及PreparedStatement防SQL注入原理
  8. 13_python_内置函数
  9. Spring MVC前后端数据交互总结
  10. postgresql-定时备份,压缩备份