webpack原理篇(六十三):插件基本结构介绍

简介: webpack原理篇(六十三):插件基本结构介绍

说明

玩转 webpack 学习笔记



插件的运行环境

插件没有像 loader 那样的独立运行环境

只能在 webpack 里面运行



插件的基本结构:

基本结构:

class MyPlugin {  // 插件名称
    apply(compiler) {  // 插件上的 apply 方法
        compiler.hooks.done.tap('My Plugin', ( // 插件的 hooks
            stats /* stats is passed as argument when done hook is tapped. */
        ) => {
            console.log('Hello World!'); // 插件处理逻辑
        });
    }
}
module.exports = MyPlugin;


插件使用:

plugins: [ new MyPlugin() ]


搭建插件的运行环境

const path = require("path");
const DemoPlugin = require("./plugins/demo-plugin.js");
const PATHS = {
    lib: path.join(__dirname, "app", "shake.js"), build: path.join(__dirname, "build"),
};
module.exports = {
    entry: {
        lib: PATHS.lib,
    },
    output: {
        path: PATHS.build, filename: "[name].js",
    },
    plugins: [new DemoPlugin()],
};




开发一个最简单的插件

src/demo-plugin.js

module.exports = class DemoPlugin {
    constructor(options) {
        this.options = options;
    }
    apply() {
        console.log("apply", this.options);
    }
};

加入到 webpack 配置中

module.exports = {
  plugins: [new DemoPlugin({ name: "demo" })]
};



实战


1、新建项目

新建文件夹 my-plugin 文件夹,执行 npm init -y

8505b2d1cea741dc8a1c074e61e3bcb5.png



2、安装 webpack 环境

npm i webpack@4.39.1 webpack-cli@3.3.6 -D

cc07b7e5bb7849a19b6864f7f41fe041.png


3、添加 webpack.config.js 配置

const path = require('path');
const MyPlugin = require('./plugins/my-plugin.js');
module.exports = {
    entry: './src/index.js',
    output: {
        path: path.join(__dirname, 'dist'),
        filename: 'main.js'
    },
    mode: 'production',
    plugins: [
        new MyPlugin({
            name: 'my plugin kaimo313'
        })
    ]
}


4、添加 src 以及 my-plugin.js

src 里面添加 index.js 文件


d2a0ce57f6864469b147a0701474f18c.png


新建 plugins 文件夹,里面添加 my-plugin.js 文件

class MyPlugin {
    constructor(options) {
        this.options = options;
    }
    apply(compiler) {
        console.log('my plugin options---->', this.options);
    }
}
module.exports = MyPlugin;



5、运行构建

执行 webpack

eed31a5b03204b4ca611de1c8c140b39.png











目录
相关文章
|
7月前
|
JavaScript 前端开发 API
webpack核心原理-2
webpack核心原理-2
37 0
|
3天前
|
前端开发
【专栏】实用webpack 插件之 DefinePlugin
【4月更文挑战第29天】`webpack` 的 `DefinePlugin` 插件用于在编译时动态定义全局变量,实现环境变量差异化、配置参数动态化和条件编译。通过配置键值对,如 `ENV: JSON.stringify(process.env.NODE_ENV)`,可以在代码中根据环境执行相应逻辑。实际应用包括动态加载资源、动态配置接口地址和条件编译优化代码。注意变量定义的合法性和避免覆盖,解决变量未定义或值错误的问题,以提升开发效率和项目质量。
|
3月前
|
缓存 前端开发 算法
Webpack 进阶:深入理解其工作原理与优化策略
Webpack 进阶:深入理解其工作原理与优化策略
47 2
|
5月前
|
自然语言处理 JavaScript 前端开发
webpack 的热更新是如何做到的?原理是什么?
webpack 的热更新是如何做到的?原理是什么?
39 0
|
5月前
|
缓存 前端开发 API
《Webpack5 核心原理与应用实践》学习笔记-> webpack插件开发基础
《Webpack5 核心原理与应用实践》学习笔记-> webpack插件开发基础
66 0
|
5月前
|
前端开发 JavaScript 测试技术
《Webpack5 核心原理与应用实践》学习笔记-> webpack的loader运行与调试
《Webpack5 核心原理与应用实践》学习笔记-> webpack的loader运行与调试
36 0
|
5月前
|
存储 缓存 JavaScript
《Webpack5 核心原理与应用实践》学习笔记-> webpack的loader开发技巧
《Webpack5 核心原理与应用实践》学习笔记-> webpack的loader开发技巧
43 1
|
5月前
|
缓存 监控 JavaScript
《Webpack5 核心原理与应用实践》学习笔记-> webpack极致性能优化
《Webpack5 核心原理与应用实践》学习笔记-> webpack极致性能优化
32 1
|
5月前
|
前端开发 JavaScript
《Webpack5 核心原理与应用实践》学习笔记-> webpack代码压缩
《Webpack5 核心原理与应用实践》学习笔记-> webpack代码压缩
44 0
|
5月前
|
监控 IDE 开发工具
《Webpack5 核心原理与应用实践》学习笔记-> webpack性能优化技巧
《Webpack5 核心原理与应用实践》学习笔记-> webpack性能优化技巧
62 0