發現問題
項目上線
經過了一段時間的打包(即熟悉的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
壓縮包給上線人員)。