自定义webpack3插件plugins

之前的老项目有个需求,在用webPack 打包完之后需要复制一份 dist 文件到别到目录;经过查看webpack 文档,发现可以利用 webpack 的生命周期钩子来实现。

其中有个钩子为done ,意思为编译完成后执行。此时已经生成了dist 文件,只要再用node 把文件复制一遍即可。

官方文档:这是webpack 5 的写法,

这是webpack3的写法:在调用done的时候不同版本的写法有差异,搞了很长时间

class donePlugin {
    apply(compiler){
        compiler.plugin('done',function(){
            //复制文件的逻辑,此时文件已经编译完成
        })
    }
}

使用时需要在webpack.config.js 里面 plugins 里面new 一下,之后才能拿到 compiler 。如下:

//webpack3 的写法
plugins:[
    new donePlugin()
]

// webpack4 的写法

configureWebpack:{
        plugins:[
            new donePlugin()
        ],
},

引申:这也就是自定义插件的方法,可以在不同的钩子里面实现不同的需求。比如去掉console,alert 等等的插件也这是利用这种方法实现的。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Webpack允许开发者创建自定义插件来扩展其功能。创建自定义插件的步骤如下: 1. 创建一个 JavaScript 文件作为插件的入口文件。 2. 在该文件中,定义一个 JavaScript 类作为插件的主体。 3. 在该类中,实现一个 `apply` 方法,该方法会在 Webpack 编译过程中被调用。 4. 在 `apply` 方法中,可以通过 Webpack 提供的钩子(Hook)来注册各种编译过程的事件回调函数,以实现自定义的功能。 下面是一个简单的示例,展示了如何创建一个打印构建信息的自定义插件: ```javascript class MyCustomPlugin { apply(compiler) { compiler.hooks.done.tap('MyCustomPlugin', (stats) => { console.log('Build completed!'); console.log('----------------'); console.log(stats.toString()); }); } } module.exports = MyCustomPlugin; ``` 在上述示例中,我们创建了一个名为 `MyCustomPlugin` 的自定义插件类,并在其中实现了一个 `apply` 方法。在该方法中,我们使用了 `compiler.hooks.done.tap` 方法来注册一个回调函数,在每次构建完成后打印构建信息。 要在 Webpack 配置文件中使用此自定义插件,可以像使用其他插件一样进行配置: ```javascript const MyCustomPlugin = require('./path/to/MyCustomPlugin'); module.exports = { // ...其他配置项 plugins: [ new MyCustomPlugin(), ], }; ``` 通过将自定义插件实例添加到 `plugins` 配置项中,Webpack 在构建过程中会调用该插件的 `apply` 方法,并触发注册的事件回调函数。 请注意,这只是一个简单的示例。根据你的需求,你可以在自定义插件中实现更复杂的逻辑,以满足你的特定需求。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值