UNPKG

@toolsjs-cli/build-analyzer

Version:

构建分析工具,支持增量构建分析、大小分析等功能

37 lines (36 loc) 1.42 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.ZipBuilder = void 0; const fs_1 = require("fs"); const path_1 = __importDefault(require("path")); const archiver_1 = __importDefault(require("archiver")); class ZipBuilder { constructor(config) { this.config = config; } async build(report) { if (report.sameBuild) { return; } const rootDir = path_1.default.basename(this.config.root || ''); const zipPath = path_1.default.join(this.config.dirBuildInfo, `${rootDir}.zip`); const output = (0, fs_1.createWriteStream)(zipPath); const archive = (0, archiver_1.default)('zip', { zlib: { level: 9 } // 最高压缩级别 }); return new Promise((resolve, reject) => { output.on('close', resolve); archive.on('error', reject); archive.pipe(output); for (const file of (report.add || []).concat(report.update || [])) { const filePath = path_1.default.join(this.config.root, file.filepath); archive.file(filePath, { name: path_1.default.join(rootDir, file.filepath) }); } archive.finalize(); }); } } exports.ZipBuilder = ZipBuilder;