4. Plugin

67 阅读1分钟

Plugin 和 Loader 区别

Loader 是用于特定的模块类型进行转换,Plugin 可以用于执行更加广泛的任务,比如打包优化、资源管理、环境变量注入等。 image.png

CleanWebpackPlugin

作用:重新打包时自动删除原来的 dist 文件夹
安装:npm install clean-webpack-plugin -D  配置:

const { CleanWebpackPlugin } = require('clean-webpack-plugin');
module.exports = {
   plugins: [
       new CleanWebpackPlugin()
   ] 
}

HtmlWebpackPlugin

作用:

  1. 自动在打包后的目录中生成了 html 文件
  2. html 文件中自动引入了 js 文件

安装 npm install html-webpack-plugin -D  配置:

const HtmlWebpackPlugin = require('html-webpack-plugin');
module: {
    plugins: [
        new HtmlWebpackPlugin({
            // 填充语法<% 变量 %>
            // title:在进行htmlWebpackPlugin.options.title读取
            title: "webpack项目",
            // 要使用的模块所在的路径
            template: "./public/index.html" // 指定自定义的HTML模板
       })
    ]
}

html 中会有 类似这样的语法<% 变量 %>,这个是EJS模块填充数据的方式。 QQ截图20240404143957.png

html 的默认模板是来自 HtmlWebpackPlugin 包的 default_index.ejs 模板,vue 是使用了自定义模板。

DefinePlugin

可以处理模板中的 <link rel="icon" href="<%= BASE_URL %>favicon.ico">,定义全局常量 BASE_URL,DefinePlugin允许在编译时创建配置的全局常量,是一个webpack内置的插件(不需要单独安装)。

const { DefinePlugin } = require('webpack');
module: {
    plugins: [
        new DefinePlugin({
          BASE_URL: '"./"'
        })
    ]
}

CopyWebpackPlugin

vue的打包过程中,如果我们将一些文件放到public的目录下,那么这个目录会被复制到dist文件夹中
将一些文件 copy 到 public 的目录
安装:npm install copy-webpack-plugin -D

  • from :设置从哪一个源中开始复制
  • to:复制到的位置,可以省略,会默认复制到打包的目录下
  • globOptions:设置一些额外的选项,其中可以编写需要忽略的文件
    .DS_Store:mac目录下回自动生成的一个文件
    index.html:也不需要复制,因为我们已经通过HtmlWebpackPlugin完成了index.html的生成 image.png