uni-app 文件打包压缩包

发布于 1周前 作者 songsunli 来自 Uni-App

uni-app 文件打包压缩包

基于原生实现对选中的文件进行压缩如 .zip .7z .gzip 等打成压缩包。离线打压缩包哦!

2 回复

这个可以定制:qq690898091


在uni-app项目中,生成打包压缩包通常涉及构建项目并将生成的资源文件压缩成一个zip文件。虽然uni-app本身不直接提供打包压缩功能,但我们可以结合Node.js和一些第三方库来实现这一目标。以下是一个使用Node.js和archiver库来创建uni-app打包压缩包的示例。

首先,确保你已经安装了Node.js和npm(Node Package Manager)。然后,在你的uni-app项目根目录下,执行以下命令来安装archiver库:

npm install archiver --save-dev

接下来,创建一个名为buildAndZip.js的脚本文件,并在其中编写以下代码:

const fs = require('fs');
const path = require('path');
const archiver = require('archiver');
const { execSync } = require('child_process');

// 定义uni-app项目路径和输出目录
const projectPath = path.resolve(__dirname, '.');
const outputDir = path.resolve(__dirname, 'dist');
const zipFileName = 'uni-app-package.zip';

// 执行uni-app构建命令
execSync(`cross-env NODE_ENV=production uni-app-cli service build`, {
  stdio: ['ignore', 'pipe', 'inherit'],
  cwd: projectPath
});

// 创建输出目录(如果不存在)
if (!fs.existsSync(outputDir)){
    fs.mkdirSync(outputDir);
}

// 创建压缩包
const output = fs.createWriteStream(path.join(outputDir, zipFileName));
const archive = archiver('zip', {
  zlib: { level: 9 } // 设置压缩级别
});

output.on('close', function() {
  console.log(archive.pointer() + ' total bytes');
  console.log('archiver has been finalized and the output file descriptor has closed.');
});

archive.on('error', function(err) {
  throw err;
});

// 将构建生成的文件夹添加到压缩包中
archive.directory(path.join(projectPath, 'dist', 'build'), false);

// 管道化压缩数据到目标文件
archive.pipe(output);
archive.finalize();

注意:

  1. 上述脚本中使用了cross-env来设置环境变量,确保跨平台兼容性。如果未安装cross-env,请先安装它:npm install cross-env --save-dev
  2. uni-app-cli service build是uni-app的构建命令,根据你的实际项目配置可能需要调整。
  3. archive.directory方法的第二个参数false表示不包含目录的根路径。

运行此脚本时,它将首先构建uni-app项目,然后将生成的构建文件压缩成一个zip文件,并保存到指定的输出目录中。确保在执行脚本前,你的uni-app项目配置正确,并且所有依赖都已安装。

回到顶部