webpack中Loader和Plugin的区别小结
作者:剑九 六千里
本文主要介绍了webpack中Loader和Plugin的区别小结,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
Loader 的本质为函数,函数中的 this 作为上下文会被 webpack 填充,因此我们不能将 loader 设为一个箭头函数。一般在编写 loader 的过程中,保持功能单一,避免做多种功能。
Loader
是一个转换器,它将源代码从一种格式转换成另一种格式。例如,你可以使用 Loader
将 TypeScript
代码转换成 JavaScript
代码。Loader
通常在 module.rules
配置中指定。
常用的一些 Loader
:
- babel-loader: 用于将
ES6+
代码转换成ES5
代码,以便在旧版浏览器中运行。 - css-loader: 用于将
CSS
代码加载到JavaScript
模块中。 - style-loader: 用于将
CSS
代码注入到HTML
的<style>
标签中。 - file-loader: 用于将文件(如图片、字体等)加载到
JavaScript
模块中,并返回该文件的URL
。 - url-loader: 类似于
file-loader
,但它可以将小文件(如图片、字体等)转换成Data URL
,以便在HTML
中内联使用。 - ts-loader: 用于将
TypeScript
代码转换成JavaScript
代码。 - sass-loader: 用于将
Sass/SCSS
代码转换成CSS
代码。 - less-loader: 用于将
LESS
代码转换成CSS
代码。 - vue-loader: 用于将
Vue.js
单文件组件 (SFC
) 转换成JavaScript
模块。
示例:
// vue.config.js module.exports = { module: { rules: [ { test: /\.js$/, exclude: /node_modules/, use: { loader: 'babel-loader', options: { presets: ['@babel/preset-env'] } } }, { test: /\.css$/, use: ['style-loader', 'css-loader'] }, { test: /\.(png|jpg|gif|svg)$/, use: ['file-loader'] } ] } };
Plugin
是一个扩展器,它可以对 webpack
的构建流程进行自定义。Plugin
通常在 plugins
配置中指定。例如,你可以使用 Plugin
来压缩你的 JavaScript
代码,或者生成一个 HTML
文件来为你的应用提供一个入口点。
常用的一些 Plugin
:
- html-webpack-plugin: 用于生成一个
HTML
文件来为你的应用提供一个入口点。 - clean-webpack-plugin: 用于在每次构建之前清理输出目录。
- mini-css-extract-plugin: 用于将
CSS
代码提取到单独的文件中。 - copy-webpack-plugin: 用于将文件从源目录复制到目标目录。
- webpack-bundle-analyzer: 用于生成一个交互式的
webpack
包分析器报告。 - terser-webpack-plugin: 用于压缩
JavaScript
代码。 - optimize-css-assets-webpack-plugin: 用于压缩
CSS
代码。 - compression-webpack-plugin: 用于将文件压缩成
gzip
或brotli
格式。 - webpack-merge: 用于将多个
webpack
配置合并成一个。
示例:
// vue.config.js const HtmlWebpackPlugin = require('html-webpack-plugin'); const { CleanWebpackPlugin } = require('clean-webpack-plugin'); module.exports = { plugins: [ new CleanWebpackPlugin(), new HtmlWebpackPlugin({ template: './src/index.html' }) ] };
到此这篇关于webpack中Loader和Plugin的区别小结的文章就介绍到这了,更多相关webpack Loader和Plugin内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!