node压缩文件夹之compressing

2019-06-04  本文已影响0人  蟹行者

发现问题

项目上线

经过了一段时间的打包(即熟悉的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压缩包给上线人员)。

上一篇下一篇

猜你喜欢

热点阅读