webpack插件:压缩打包文件

2021-03-08  本文已影响0人  Viewwei

vue打包文件出来的是一个文件夹,发送给其他人的时候需要一个zip压缩包。这时候就需要使用到插件。当然也可以使用现成的插件对压缩包进行压缩。为了对webpack插件的进一步的了解,自己编写一个插件来完成对打包文件的压缩

webpack 前提知识点

手动编写一个压缩打包文件的插件

const fs = require('fs')
const compressing = require('compressing');
class Zip {
    constructor(option){
        this.option = option
    }
    apply(compiler){
      compiler.hooks.afterEmit.tapAsync("Zip",(_,cb)=>{
       let exist =  fs.existsSync(this.option.filePath)
        if(exist){
            if(!fs.existsSync(this.option.zipPath)){
                //zip压缩保存的目录不存在了,先创建
                fs.mkdirSync(this.option.zipPath)
            }
            let fileName ="target.zip"
            if (this.option.zipName){
                fileName = `/${this.option.zipName}.zip`
            } 
            let zipPath = this.option.zipPath +fileName
            if (fs.existsSync(zipPath)) {
                // 压缩包存在,先删除压缩包
                fs.unlinkSync(zipPath)
            }
            compressing.zip.compressDir(this.option.filePath,zipPath)
            .then(()=>{
                cb()
            }).catch(err=>{
                cb()
            })
           
        }else{
            cb()
        }
      })
    }
}
exports = module.exports = Zip

    plugins:[
      new zipPlugin({
        filePath:path.resolve(__dirname,"build"), //代表打包文件的目录
        zipPath:path.resolve(__dirname,"target"),//代表要保存到那个目录下
        zipName:"view"//压缩文件的名称
      })
    ],
上一篇 下一篇

猜你喜欢

热点阅读