nodejs 压缩文件

这个事情,是为了能自动部署的
就是项目打包后,自动压缩文件,然后去向一个后台提供的接口上传这个压缩文件。从而实现自动部署


const path = require('path')
const fs = require('fs')
const archiver = require('archiver')//这个就是用于压缩的包
const axios = require('axios') //axios 需要引入
const FormData = require('form-data')//这个是node 的 form包

//组装两个路径,一个输入路径,一个输出路径   
//我这里是nuxt项目所以后面是.nuxt文件夹,通常,vue的是dist文件夹
const filePath = path.resolve(__dirname, './.nuxt/')
const zipPath = path.resolve(__dirname, './.nuxt.zip')
//导出这个函数
export function deploy(){
	const output = fs.createWriteStream(zipPath)//设置一下输出流
	const archive = archiver('zip', {
	  zlib: {
	    level: 9//这个配置是配置压缩等级,我没具体研究,直接使用了9
	  }
	})
	archive.directory(filePath, false)
	archive.pipe(output) // 将打包对象与输出流关联
	// 监听所有archive数据都写完
	output.on('close', function () {
	  console.log('压缩完成', archive.pointer() / 1024 / 1024 + 'M')
	  postZip()
	})
	archive.on('error', function (err) {
	  throw err
	})
	// 打包
	archive.finalize()

}
// 发送请求部署代码
function postZip () {
  const form = new FormData()
  form.append('file', fs.createReadStream(path.resolve(__dirname, './.nuxt.zip')))
  axios.post(
    'xxxxx',//请求地址,需要后端有这个自动部署功能,并给了你权限
    form, 
    form.getHeaders()//自动获取请求头
  ).then(res =>
    console.log('success')
  ).catch((err) => {
    console.log(err)
  })
}

接下来,配置vue的config.js里面,加入这个配置

//引入刚才导出的函数
import { deploy } from "./deploy";

//这里我就随便这么放了,具体放这部分代码的位置,在你的config文件中去放就好
configureWebpack:config => {
 config.plugins.push({
          apply: (compiler) => {
            compiler.hooks.done.tap('deploy', compilation => {
               deploy()
            });
          }
        })
}

完成,

npm run build

之后 就会自动压缩,然后上传到指定的请求

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值