需求描述:将当前文件夹的
dist
文件夹压缩到compress.zip
代码实现
通过 node.js
的 path
模块定位当前的文件输入、输出路径;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()