node压缩文件夹之compressing
发现问题
项目上线
经过了一段时间的打包(即熟悉的npm run build
)、压缩(通过压缩工具压成.zip
包)、上线(把压缩包发给上线人员),终于,发现了有优化的空间,哈哈。
什么?项目上线还属于人工操作?利用压缩包的方式?还没用到自动化部署?
打扰了,打扰了。
主角登场
找了一下,发现了一个好用又方便的包 compressing
,支持压缩文件夹,支持zip
压缩。
开始压缩
程序能做到压缩,为啥还要自己手动去压缩,于是,就有了下面的故事。
const path = require("path");
const fs = require("fs");
const chalk = require("chalk");
// 这个是主角
const compressing = require("compressing");
const dayjs = require("dayjs");
const resolve = dir => path.join(__dirname, "..", dir);
const publishPath = resolve("publish");
const zipName = (() => `publish/fzApp ${dayjs().format("YYYYMMDD_HHmm")}.zip`)();
// 判断是否存在当前publish路径,没有就新增
if (!fs.existsSync(publishPath)) {
fs.mkdirSync(publishPath);
}
compressing.zip
.compressDir(resolve("dist/"), resolve(zipName))
.then(() => {
console.log(chalk.yellow(`Tip: 文件压缩成功,已压缩至【${resolve(zipName)}】`));
})
.catch(err => {
console.log(chalk.red("Tip: 压缩报错"));
console.error(err);
});
问题解决
在自动压缩这个点上,问题是解决了的。
于是,以后上线的流程变成了:
打包(npm run build && npm run zip
)、上线(发送zip
压缩包给上线人员)。