node 实现文件压缩

需求描述:将当前文件夹的 dist 文件夹压缩到 compress.zip

代码实现

通过 node.jspath模块定位当前的文件输入、输出路径;fs模块用于文件的操作;archiver模块用于压缩。

// compress.js
const path = require('path')
const fs = require('fs')
const archiver = require('archiver')

const targetDir = path.join(__dirname, "/dist")  // 要压缩哪个文件
const outputDir = path.join(__dirname, "")  // 输出到哪个文件目录,默认为当前目录下
const fileName = 'compress.zip' // 压缩出来的文件名

function compressFile () {
  return new Promise((resolve, reject)=>{
    console.log('正在压缩⽂件...')
    if(!fs.existsSync(outputDir)) fs.mkdirSync(outputDir); // 如果文件夹不存在,则创建
    let output = fs.createWriteStream(`${outputDir}/${fileName}`) // 创建⽂件写⼊流
    const archive = archiver('zip', { zlib: { level: 9 } }) // 设置压缩等级
    
    output.on('close', () => {
      resolve( console.log('压缩完成!') )
    }).on('error', (err) => {
      reject( console.error('压缩失败', err) )
    })
    
    archive.pipe(output)
    archive.directory(targetDir, false) // 存储⽬标⽂件 
    archive.finalize() // 完成归档
  })
}
compressFile()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值