一般情况下,配置分成3个文件;
引入webpack-merge,开发环境和生产环境要merge上公共配置

在webpack下,怎么跨域请求其它的接口?
面试常问
比如说前端的端口是8080,服务端如果端口是3000,这样前端在请求时如果直接请求3000会导致跨域请求不到,这时候可以使用proxy代理。


需要配置.bebelrc


postcss-loader,是处理css浏览器兼容性的
less-loader
css-loader
style-loader
使用postcss-loader时,需要配置postcss.config.js

开发环境中

生产环境中

在公共配置中的entry配置多个入口


抽离css文件后,css样式是以外部链接文件的形式引入的

不抽离css时,css会放到中

线上打包,必须抽离CSS文件
两个文件引入了同一个模块,会打包两次

第三方模块

lodash文件较大
每次修改业务代码时,lodash都要重新打包,但是lodash并没有改变根本不需要重新打包
应该把lodash拆出去单独打包,当业务代码改变时,loadsh会命中缓存,加载会快
chunks & 缓存分租

可以设置minSize来限制多大的第三方模块单独打包
如果文件非常小,可以不抽离,直接和业务代码一起打包
minChunks: 2 // 公共模块最少复用过几次
比如公共模块至少复用了2次,就把它抽离出来单独打包,比如math
懒加载也会产生一个chunk

@babel/preset-react

vue-loader



开启缓存: 用cacheDirectory,只要ES6代码没变,就不会重新编译,会缓存下来
第二次编译时,没改的部分使用缓存
// 业务代码中动态引入语言包
import ‘moment/locale/zh-cn’
区别:IgnorePlugin直接不引入,代码中没有
noParse(类似vue.min.js已经模块化处理过)引入,但不打包
1.js单线程,开启多进程打包
2.提高构建 进度
// 步骤1 module.rules下-将对.js的文件交给id为label的HappyPack实例
{
test: /.js$/,
use: [‘happypack/loader?id=babel’]
}
// 步骤2 happyPack开启多进程打包
new HappyPack({
id: ‘babel’,
loaders: [‘babel-loader?cacheDirectory’]
})

热更新配置

自己配置哪些模块需要热更新

webpack优化构建速度
(可用于生产环境)
(不可用于生产环境!)