目录一、pulgin 的作用二、pulgin 配置方式三、pulgin 的本质四、常见的 pulgin4-1 html-webpack-plugin4-2 clean-WEBpack
pulgin 就是“插件”的意思,主要目的就是解决 loader 无法实现的事情,loader 只是用作于将特定的模块进行转换,而 pulgin 可以用于执行更加广泛的任务,比如打包优化、资源管理、环境变量注入等
pulgin 是贯穿 webpack 整个编译周期的,运行在 webpack 的不同阶段(钩子 / 生命周期)
通常情况下,pulgin 的配置都是通过 webpack.config.js 配置文件导出对象中 plugins 属性传入 new 实例对象
const HtmlWebpackPlugin = require('html-webpack-plugin'); // 通过 npm 安装
const webpack = require('webpack'); // 访问内置的插件
module.exports = {
...
// 配置 plugins
plugins: [
new webpack.ProgressPlugin(),
new HtmlWebpackPlugin({ template: './src/index.html' }),
],
};
pulgin 本质上是一个具有 apply 方法 javascript 对象,而他的这个 apply 方法会被 webpack compiler 阶段调用,并且在整个编译生命周期都可以访问 compiler 对象
const pluginName = 'ConsoleLoGonBuildWebpackPlugin';
class ConsoleLogOnBuildWebpackPlugin {
apply(compiler) {
compiler.hooks.run.tap(pluginName, (compilation) => {
console.log('webpack 构建过程开始!');
});
}
}
module.exports = ConsoleLogOnBuildWebpackPlugin;
关于整个编译生命周期钩子:
作用:
<%=htmlWebpackPlugin.options.XXX%>
的方式获取配置的值// webpack.config.js
const HtmlWebpackPlugin = require("html-webpack-plugin");
module.exports = {
...
plugins: [
new HtmlWebpackPlugin({
title: "webpack案例",
template: "./public/index.html", // 指定生成的 html 模版
}),
]
};
作用:每次打包时候,CleanWebpackPlugin 插件就会自动把上一次打的包删除
const {CleanWebpackPlugin} = require('clean-webpack-plugin');
module.exports = {
...
plugins: [
new CleanWebpackPlugin()
]
}
作用:提取 CSS 到一个单独的文件中
const MiniCssExtractPlugin = require('mini-css-extract-plugin');
module.exports = {
...,
module: {
rules: [
{
test: /.s[ac]ss$/,
use: [
{
loader: MiniCssExtractPlugin.loader
},
'css-loader',
'sass-loader'
]
}
]
},
plugins: [
...,
new MiniCssExtractPlugin({
filename: '[name].css'
}),
...
]
}
作用:DefinePlugin 允许在编译时创建配置的全局常量,是一个 webpack 内置的插件(不需要单独安装)
const { DefinePlugun } = require('webpack')
module.exports = {
...
plugins:[
new DefinePlugin({
BASE_URL: '"./"' // 等价于 const BASE_URL = "./" 他的赋值方式有点奇葩
}),
]
}
这时候编译template模块的时候,就能通过下述形式获取全局对象
<!-- BASE_URL 是一个全局的常量,是通过 DefinePlugin 这个插件去定义的 -->
<link rel="icon" href="<%= BASE_URL %>favicon.ico" rel="external nofollow" >
作用:CopyWebpackPlugin 是一个复制文件的插件,复制文件或者目录到指定区域,比如 Vue 的打包过程中,如果我们将一些文件放到 public 的目录下,那么这个目录会被复制到 dist 文件夹中
new CopyWebpackPlugin({
// 通过 CopyWebpackPlugin 插件将 public 中的文件复制到打包后的文件夹下
// patterns 是匹配的意思
patterns: [
{
from: "public", // 设置从哪一个源中开始复制
to: "build" // 可以省略,默认是复制到打包输出的路径,会根据 output
globOptions: {
ignore: ['**/DS_Store', '**/index.html', '**/abc.txt'] // ** 表示的是 from 的文件夹
}
// globOptions:设置一些额外的选项,其中可以编写需要忽略的文件,
//比如.DS_Store:Mac目录下回自动生成的一个文件;.index.html:也不需要复制,因为我们已经通过HtmlWebpackPlugin完成了index.html的生成
}
]
})
到此这篇关于webpack Plugin讲解的文章就介绍到这了,更多相关webpack Plugin讲解内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!
--结束END--
本文标题: 超级详细的webpack Plugin讲解
本文链接: https://lsjlt.com/news/145550.html(转载时请注明来源链接)
有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341
2024-01-12
2023-05-20
2023-05-20
2023-05-20
2023-05-20
2023-05-20
2023-05-20
2023-05-20
2023-05-20
2023-05-20
回答
回答
回答
回答
回答
回答
回答
回答
回答
回答
0