node项目自动打zip压缩包
普通node项目
参考文章:
https://www.cnblogs.com/xieqian/p/10973324.html
https://blog.csdn.net/weixin_43968658/article/details/102949470
安装依赖
yarn add compressing -D
yarn add dayjs -D
脚本
node执行以下脚本,就可以实现将dist目录打包到./zip目录下,自定义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 = (() => `.zip/dist_sit_${dayjs().format("YYYYMMDDHHmm")}.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);
});
vue-cli2项目
安装依赖
yarn add filemanager-webpack-plugin@2.0.5 -D
yarn add dayjs -D
脚本
const FileManagerWebpackPlugin = require('filemanager-webpack-plugin')
const dayjs = require("dayjs")
const zipName = `.zip/dist_sit_${dayjs().format("YYYYMMDDHHmm")}.zip`
let kkm = new FileManagerWebpackPlugin ({ // 需要在 plugins 数组里添加
onEnd: {
// delete: [
// './zip/xxxx.zip', // 删除之前已经存在的压缩包
// ],
mkdir: ['.zip'], // 需要先创建.zip文件夹,否则压缩会报找不到路径
archive: [
{source: './dist', destination: zipName},
]
}
})
webpackConfig.plugins.push(kkm)
module.exports = webpackConfig
vue-cli3项目
安装依赖
yarn add filemanager-webpack-plugin@2.0.5 -D
yarn add dayjs -D
脚本
const FileManagerPlugin = require('filemanager-webpack-plugin')
const dayjs = require('dayjs')
module.exports = {
// 方式一:
configureWebpack: { // webpack的相关配置在这里
plugins: [
new FileManagerPlugin({ // 初始化 filemanager-webpack-plugin 插件实例
onEnd: {
// delete: [ // 首先需要删除项目根目录下的dist.zip
// './projectName.zip'
// ],
mkdir: ['.zip'], // 需要先创建.zip文件夹,否则压缩会报找不到路径
archive: [ // 然后我们选择dist文件夹将之打包成dist.zip并放在根目录
{ source: './dist', destination: `.zip/dist_sit_${dayjs().format('YYYYMMDDHHmm')}.zip` }
]
}
})
]
}
// 方式二:
// chainWebpack: webpackConfig => {
// webpackConfig.plugin('zip').use(require('filemanager-webpack-plugin'), [
// {
// onEnd: {
// mkdir: ['.zip'], // 需要先创建.zip文件夹,否则压缩会报找不到路径
// archive: [
// {
// source: 'dist',
// destination: `.zip/dist_sit_${dayjs().format('YYYYMMDDHHmm')}.zip`
// }
// ]
// }
// }
// ])
// }
}