美文网首页
自定义BannerWebpackPlugin

自定义BannerWebpackPlugin

作者: 姜治宇 | 来源:发表于2023-07-20 16:40 被阅读0次

功能

BannerWebpackPlugin的功能很简单,是给打包输出的文件添加注释。

开发思路

1、通过compilation.assets可以拿到所有即将打包输出的资源文件。
2、遍历资源列表,获得资源后写入注释。
3、触发compiler.hooks.emit钩子,把改好的资源输出。

实现

/*
    1、webpack加载webpack.config.js中所有配置,此时就会new MyPlugin(),执行插件的constructor
    2、创建compiler对象
    3、遍历所有plugins中的apply方法
    4、执行编译流程,触发hooks事件
*/
class BannerWebpackPlugin {
    constructor() {
        console.log('BannerWebpackPlugin constructor...');
    }
    apply(compiler) {
        console.log('apply...');
        compiler.hooks.emit.tap('BannerWebpackPlugin', (compilation) => {
            const extArr = ['css', 'js'];
            const assets = Object.keys(compilation.assets).filter(item => { //只获取css和js资源
                const extName = item.split('.').pop();
                return extArr.includes(extName);

            });

            console.log(assets);
            const prefix = `
            /*
                Author: Bill
                Date: 2023/07/21
            */
           `;

            assets.map(item => {

                const source = compilation.assets[item].source();//获取内容

                const dest = prefix + source;//字符串拼接

                compilation.assets[item] = {//弄好了塞回去
                    source() {
                        return dest;
                    },
                    size() {
                        return dest.length;
                    }

                };


            });

        });
    }
}

module.exports = BannerWebpackPlugin;

webpack完整工作流程

1.jpg

相关文章

  • Dialog

    安卓dialog的使用+如何自定义dialog自定义Dialog自定义Dialog 自定义

  • django的自定义filter和自定义simple_tag

    django的自定义filter和自定义simple_tag 自定义filter: 自定义filter: 简单示例...

  • 自定义tabbarController

    要自定义tabBarController,就要自定义tabBar.要自定义tabBar就要自定义item.所以,咱...

  • 第三方

    ZYSideSlipFilter 侧边栏条件筛选器,支持自定义事件,自定义筛选栏目,自定义所有。。。样式完全自定义...

  • Android 高德地图 自定义Location小蓝点

    设置自定义定位蓝点 自定义Location小蓝点,自定义功能

  • vue 有自定义指令

    vue 的自定义指令,分为全局自定义指令和局部自定义指令,局部自定义指令等价于局部组件。 自定义指令可以对DOM进...

  • Android相关知识点博客记录

    自定义属性 Android自定义View(二、深入解析自定义属性) Android中XML的命名空间、自定义属性 ...

  • CocoaLumberjack源码分析

    1.使用 自定义custom context,自定义flag 自定义日志的格式 自定义日志级别,取消DDLog实现...

  • Android View(转)

    自定义View的原理自定义View基础 - 最易懂的自定义View原理系列自定义View Measure过程 - ...

  • 如何自定义控件

    自定义View过程:onMeasure()、onLayout()、onDraw()。 如何自定义控件: 1、自定义...

网友评论

      本文标题:自定义BannerWebpackPlugin

      本文链接:https://www.haomeiwen.com/subject/fbrzudtx.html