sapi-kit
Version:
A development toolkit for Minecraft Bedrock Edition Script API
42 lines (41 loc) • 1.66 kB
JavaScript
import AdmZip from "adm-zip";
import chalk from "chalk";
import { existsSync, rmSync } from "fs";
import { mkdir, rm } from "fs/promises";
import path from "path";
import { copyFiles } from "./copy.js";
import { formatTime, getManifestData, loadConfig } from "./func.js";
const packRoot = "./build";
export async function runPack() {
console.log(`${formatTime()} ${chalk.blue("打包开始...")}`);
const config = await loadConfig();
//获取manifest信息
const manifestData = getManifestData();
if (existsSync(packRoot)) {
await rm(packRoot, { recursive: true });
}
const tempPath = path.join(packRoot, "temp");
await mkdir(packRoot);
await copyFiles("./", tempPath, true);
//创建.mcpack
const zip = new AdmZip();
zip.addLocalFolder(tempPath);
let name = config.packageName ? config.packageName : `${manifestData.header.name}`;
if (config.includeVersionInName) {
name = name + manifestData.header.version.join(config.useCommaStyleVersion ? "," : ".");
}
const packPath = path.join(packRoot, `${name}.mcpack`);
console.log(chalk.gray(`生成打包文件: ${packPath}`));
zip.writeZip(packPath);
//清理temp
rmSync(tempPath, { recursive: true });
//创建.zip
if (config.enableExtraZip) {
const extraZipPath = path.join(packRoot, `${name}.zip`);
const extraZip = new AdmZip();
extraZip.addLocalFile(packPath);
console.log(chalk.gray(`生成压缩包: ${extraZipPath}`));
extraZip.writeZip(extraZipPath);
}
console.log(`${formatTime()} ${chalk.greenBright(`打包完成,输出路径: ${packRoot}`)}`);
}