webpack基础配置, 高级配置

142 阅读3分钟

基础配置

1. entry入口, 从哪个文件开始打包

2. output 输出, 输出哪里去

3. loader 加载器  (webpack只能处理js、json等资源 其他(处理样式,处理图片)资源需要借助loader,webpack才能解析, babel-loader两个作用, es6=>es5, jsx=>js)

4. plugin 插件 (扩展webpack功能, html模板, eslint)

5. 开发模式 (让代码编译自动化运行), 生产模式(代码编译优化输出, 压缩js代码)

6. devserver 配置(自定编译,自定刷新)

7. webpack 脚本指令用法   webpack 直接打包输出, webpack serve 启动开发服务器,内存编译打包,没有输出

高级配置

对webpack优化, 代码在编译时、运行时性能更好   => 提升开发体验, 提升打包构建速度, 减少代码体积, 优化待代码运行性能

1. sourceMap (源代码映射) 

用来生成源代码与构建后代码=>映射的文件方案

里面包含源代码和构建代码每一行, 每一列映射关系,  构建后代码出错, 从出错位置找到映射后源代码的位置, 让浏览器提示源代码出错位置,  找到错误根源

2. 热更新

 在程序运行中, 替换,添加,删除模块, 而无需重新加载整个页面= >webpack5默认配置

开发模式下,  只会更新修改的模块,  style支持,  js默认不支持,  module.hot.accept('./js'), => vue-loader, react-loader

3. oneof  每个文件只能被一个loader处理

每种文件,只有一种loader处理,  找打对应loader之后就不需要在查找,   

4. include, exclude

5. cache缓存之前的eslint 和babel

6. 多进程打包

面对js文件主要就是eslint, babel, Thead 三个工具, 提升它的运行速度

npm i thread-loader  -D

7. treeShaking 移除js中没有使用的代码  ESmodule  默认开启

8. 本地加载的图片进行压缩

npm i image-minimizer-webpack-plugin imagemin -D

9. codesplit 代码分割

分割文件, 生成多个js文件, 按需加载, 需要哪个用哪个

10 preload 告诉浏览器立即加载资源 / prefetch 告诉浏览器在空闲时加载资源

共同点: 都会加载资源, 并不执行, 都有缓存 

区别: preload优先级高,  只能加载当前页面需要的资源,  prefetch可以加载下一个页面的资源

总结: 当前页面优先级搞得资源使用preload加载, 下一个页面需要使用的资源用prefetch, 兼容性差, 

11. core-js 

babel处理箭头函数,但是async promise没法处理,  专门做es6以上的api的补丁,让我们在不兼容某些新特新下的浏览器下使用

12. PWA 渐进式网络应用程序

项目一旦处于网络离线情况, 就没法访问,  提供一种类似原生应用程序, 体验的web app技术, 在离线时也能够继续运行, 内部通过service workers技术实现