常见 loader 和 plugin 有哪些?
常见 loader
语法转换
- babel-loader 把 TS 变成 JS
- ts-loader 把 TS 变成 JS
- eslint-loader:通过 ESLint 检查 JavaScript 代码
类型转换
- html-loader 把 html 变成 JS 字符串
- image-loader 加载并且压缩图片文件
文件转换
- file-loader:把文件输出到一个文件夹中,在代码中通过相对 URL 去引用输出的文件
- url-loader:和 file-loader 类似,但是能在文件很小的情况下以 base64 的方式把文件内容注入到代码中去
样式转换
- sass-loader 把 SASS/SCSS 变成 CSS
- less-loader 把 Less 变成 CSS
- css-loader 把 CSS 变成 JS 字符串
- postcss-loader 优化 CSS
- style-loader 把 JS 字符串 变成 style 标签
在 webpack 文档里写了: Loaders | webpack
常见 plugin
- html-webpack-plugin 用于创建 HTML 页面并自动引入 JS 和 CSS
- mini-css-extract-plugin 用于将 JS 中的 CSS 抽离成单独的 CSS 文件
- eslint-webpack-plugin 用于检查代码中的错误
- uglifyjs-webpack-plugin:通过 UglifyES 压缩 ES6 代码
- ExtractTextWebpackPlugin: 将所有的入口 chunk 中引用的.css,移动到独立分离的 CSS 文件
- commons-chunk-plugin:提取公共代码
也在 webpack 文档里写了:Plugins | webpack
二者的区别
loader 是文件加载器
功能:能够对文件进行编译、优化、混淆(压缩)等,比如 babel-loader / vue-loader 运行时机:在创建最终产物之前运行
plugin 是 webpack 插件
功能:能实现更多功能,比如定义全局变量、Code Split、加速编译等 运行时机:在整个打包过程(以及前后)都能运行