file-loader:把文件输出到一个文件夹中,在代码中通过相对 URL 去引用输出的文件
url-loader:和 file-loader 类似,但是能在文件很小的情况下以 base64 的方式把文件内容注入到代码中去
source-map-loader:加载额外的 Source Map 文件,以方便断点调试
image-loader:加载并且压缩图片文件
babel-loader:把 ES6 转换成 ES5
css-loader:加载 CSS,支持模块化、压缩、文件导入等特性
style-loader:把 CSS 代码注入到 JavaScript 中,通过 DOM 操作去加载 CSS。
eslint-loader:通过 ESLint 检查 JavaScript 代码
bundle:有webpack打包出来的文件
chunk:webpack在进行模块的依赖分析的时候,代码分割出来的代码块
module:开发中的单个模块 作者:薇ucc2cc https://www.bilibili.com/read/cv8952479/ 出处:bilibili
如何利用webpack来优化前端性能
压缩代码。uglifyJsPlugin 压缩js代码, mini-css-extract-plugin 压缩css代码
利用CDN加速,将引用的静态资源修改为CDN上对应的路径,可以利用webpack对于output参数和loader的publicpath参数来修改资源路径
删除死代码(tree shaking),css需要使用Purify-CSS
提取公共代码。webpack4移除了CommonsChunkPlugin (提取公共代码),
3 webpack 构建流程
3.1. 初始化参数,从配置文件和shell语句中读到的参数合并,得到最后的参数
3.2. 开始编译:用合并得到的参数初始化complier对象,加载是所有配置的插件,执行run方法开始编译
3.3. 确定入口,通过entry找到入口文件
3.4. 编译模块,从入口文件出发,调用所有配置的loader对模块进行解析翻译,在找到该模块依赖的模块进行处理
3.5. 完成模块编译,得到每个模块被翻译之后的最终的内容和依赖关系
3.6. 输出资源,根据入口和模块之间的依赖关系,组装成一个个包含多个模块的chunk,在把每个chunk转换成一个单独的文件加载到输出列表
3.7. 输出完成,确定输出的路径和文件名,把内容写到文件系统中