js打印插件_webpack - 插件机制(笔记)

e6b15eacc38334c80510e639c2d9b02b.png

webppack原理与实战:

webpack通过loader机制,可以让我们加载各种各样的资源,但webpack还有一个也很重要的机制就是插件机制,可以让我们找到很多合适的插件,增加构建能力。

插件是如何使用的

在webpack的整个工作周期过程中,会提供需要很多钩子函数,我们只需要在钩子上挂载不同的任务,就能扩展webpack的能力了。

一些常用的插件

  • CleanWebpackPlugin
  • HtmlWebpackPlugin
  • CopyWebpackPlugin

webpack.config.js配置插件使用

// import {Configuartion} from 'webpack'
const path = require('path')
const { CleanWebpackPlugin } = require('clean-webpack-plugin')
const HtmlWebpackPlugin = require('html-webpack-plugin')
const CopyWebpackPlugin = require('copy-webpack-plugin')
const RemoveCommentsPlugin = require('./remove-comments-plugin')
// /**
//  * @type {Configuartion}
//  */
module.exports = {
    mode:"none",
    entry:'./src/main.js',
    output: { 
        filename:'bundle.js',
        path:path.join(__dirname,'dist')
     },
     plugins: [
         new CleanWebpackPlugin(),
         new HtmlWebpackPlugin({
            //  title:'Webpack plugin demo',
            //  meta:{
            //      viewport:'width=device-width'
            //  }
            title:'嵌套到模板中的标题',
            template:'./src/index.html'
         }),
         new CopyWebpackPlugin({
             patterns:[
                 {from:'static',to:''}
             ]
         }),
         new RemoveCommentsPlugin()
        ]
}
其中还是自定义了一个插件:RemoveCommentsPlugin

当我们自定义插件时,我们需要遵循webpack提供的形式。

这里定义个remove-comments-plugin.js,同时导出.
// remove-comments-plugin.js
// 可以帮助我们去除生成js脚本中的注释
class RemoveCommentsPlugin {
    apply(compiler) {
        compiler.hooks.emit.tap('RemoveCommentsPlugin', compilation => {
            for (const name in compilation.assets) {
                console.log(name)
                if (name.endsWith('.js')) {
                    const contents = compilation.assets[name].source()
                    const noComments = contents.replace(//*{2,}/s?/g, '')
                    compilation.assets[name] = {
                        source: () => noComments,
                        size: () => noComments.length
                    }
                }
            }
        })
        console.log('删除生成js中的注释')
    }
}

module.exports = RemoveCommentsPlugin;
使用 npx webpack构建看看效果

可以看到打印出了,删除生成js中的注释,还有所有的文件,在去看看打包的bundle.js会发现注释已经不见啦。

91a94b221f77251ab5a3a0fbd3c73693.png
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值