常见 loader
babel-loader
把 高版本JS/TS 变成 低版本JSts-loader
把 TS 变成 JS, 并提示类型错误markdown-loader
把 markdown 变成 htmlhtml-loader
把 html 变成 JS 字符串sass-loader
把 Sass 变成 CSScss-loader
把 CSS 变成 JS 字符串style-loader
把 JS 字符串变成 style 标签postcss-loader
把 CSS 变成更优化的 CSSvue-loader
把单文件组件(SFC) 变成 JS 模块thread-loader
用于多进程打包
更多请参考官方文档
常见 plugin
html-webpack-plugin
用于创建 HTML 页面并自动引入 JS 和 CSSclean-webpack-plugin
用于清理之前打包的残余文件mini-css-extract-plugin
用于将 JS 中的 CSS 抽离成单独的 CSS 文件SplitChunkPlugin
用于代码分包(Code Split)DllPlugin
+DllReferencePlugin
用于避免大依赖被频繁重新打包,答复降低打包时间eslint-webpack-plugin
用于检查代码中的错误DefinePlugin
用于在 webpack config 里添加全局变量copy-webpack-plugin
用于拷贝静态文件到 dist
更多请参考官方文档
plugin 和 loader 的区别
- loader 是文件加载器
- 功能:能够对文件进行编译、优化、混淆(压缩)等,比如 babel-loader / vue-loader
- 运行时机:在创建最终产物之前运行
- plugin 是 webpack 的插件
- 功能:能实现更多功能,比如定义全局变量、Code Split、加速编译等
- 运行时机:在整个打包过程(以及前后)都能运行