十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
webpack是开发工具,面试考点重点在配置和使用,原理理解不需要太深。
我们提供的服务有:成都网站建设、做网站、微信公众号开发、网站优化、网站认证、都匀ssl等。为上千家企事业单位解决了网站和推广的问题。提供周到的售前咨询和贴心的售后服务,是有科学管理、有技术的都匀网站制作公司
一、基本配置
1、拆分配置和merge
将公共配置跟dev和prod的配置拆分,然后通过webpack-merge对配置进行整合。
2、启动本地服务
dev环境启动devserver配置。
3、处理ES6
使用babel-loader,针对对应目录的js进行代码转换。
4、处理样式
使用postcss-loader、css-loader、style-loader等,这里有个考点是loader的执行顺序是从后往前执行。
5、处理图片
在dev环境直接使用file-loader进行图片的直接引用,prod环境会使用url-loader对小图片进行base64编码。
6、模块化
webpack天生支持模块化。
二、高级配置
1、配置多入口
entry设置多入口文件,在output输出文件使用[name]根据entry的key动态生成输出文件名
plugins要设置多个HtmlWebpackPlugin,根据多入口生成多个html文件,同时要设置chunks,来引入相应入口文件,如果不设置则会把全部入口文件都引入 。
2、每次打包清除dist原有文件
在plugins使用new CleanWebpackPlugin(),会默认清空 output.path 指定的文件夹内容。
3、抽离css文件
mini-css-extract-plugin使用这个插件的loder来替换style-loader。
在plugins里面配置mini-css-extract-plugin的filename,用于设置存放抽离的css具体目录和名字。
使用webpack的optimization的minimizer加入 terser-webpack-plugin 和 optimize-css-assets-webpack 插件来压缩抽离的css。
4、抽离公共代码
使用webpack的optimization的splitChunks
optimization:{ splitChunks:{ chunks:'all', // 缓存分组 cacheGroups:{ //第三方模块 vendor:{ name:'vendor', // chunk 名称 priority:1, // 权限最高,优先抽离,重要!! test:/node_modules/, // 匹配目录规则 minSize:0, // 大小限制 minChunks:1, // 最少复用过几次 } //公共模块 common:{ name:'common', // chunk 名称 priority:0, // 优先级 minSize:0, // 公共模块的大小限制 minChunks:2, // 公共模块最少复用过几次 } } } }