node项目自动打zip压缩包

node项目自动打zip压缩包

普通node项目

参考文章:

https://www.cnblogs.com/xieqian/p/10973324.htmlhttps://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`
  //           }
  //         ]
  //       }
  //     }
  //   ])
  // }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要在Node.js中解压缩压缩包,你可以使用`zlib`或`tar`模块来处理不同类型的压缩文件。下面是一个使用`zlib`模块解压缩`.zip`文件的示例: ```javascript const fs = require('fs'); const zlib = require('zlib'); const unzip = zlib.createUnzip(); const zipFilePath = 'path/to/your/file.zip'; const readStream = fs.createReadStream(zipFilePath); const writeStream = fs.createWriteStream('path/to/extract'); readStream.pipe(unzip).pipe(writeStream); writeStream.on('close', () => { console.log('压缩包已成功解压缩!'); }); writeStream.on('error', (error) => { console.error(`解压缩文件时出现错误:${error.message}`); }); ``` 在上面的代码中,我们首先创建一个读取流(`readStream`)来读取`.zip`文件。然后,我们创建一个可写流(`writeStream`)来将解压缩后的文件写入指定的目录。接下来,我们使用`zlib.createUnzip()`创建一个解压缩流(`unzip`),并通过管道(`pipe`)将读取流和解压缩流连接起来,最后将解压缩流和写入流连接起来。 你需要将`zipFilePath`变量替换为你要解压缩的`.zip`文件的实际路径,并将`path/to/extract`替换为你希望解压缩文件的目标目录。 如果你要解压缩其他类型的压缩文件(例如`.tar`),可以使用`tar`模块来进行处理。你可以使用`tar`模块的相应方法来解压缩文件。具体实现取决于你使用的压缩文件类型。 希望对你有所帮助!如果你有任何其他问题,请随时提问。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值