fix: package release zip without system binary
continuous-integration/drone/tag Build is passing

This commit is contained in:
2026-05-25 11:57:22 +08:00
parent d302614b99
commit 66e814b30f
8 changed files with 89 additions and 13 deletions
+33
View File
@@ -0,0 +1,33 @@
import { createWriteStream } from "node:fs";
import { readdir } from "node:fs/promises";
import path from "node:path";
import { pipeline } from "node:stream/promises";
import yazl from "yazl";
export async function createReleaseArchive({ archivePath, sourceDir }) {
const zip = new yazl.ZipFile();
const output = createWriteStream(archivePath);
await addDirectory(zip, sourceDir, sourceDir);
zip.end();
await pipeline(zip.outputStream, output);
}
async function addDirectory(zip, rootDir, currentDir) {
const entries = await readdir(currentDir, { withFileTypes: true });
entries.sort((left, right) => left.name.localeCompare(right.name));
for (const entry of entries) {
const absolutePath = path.join(currentDir, entry.name);
const relativePath = path.relative(rootDir, absolutePath);
if (entry.isDirectory()) {
await addDirectory(zip, rootDir, absolutePath);
continue;
}
if (entry.isFile()) {
zip.addFile(absolutePath, relativePath);
}
}
}
+4 -6
View File
@@ -1,10 +1,7 @@
import { mkdir, rm } from "node:fs/promises";
import path from "node:path";
import { fileURLToPath } from "node:url";
import { execFile } from "node:child_process";
import { promisify } from "node:util";
const execFileAsync = promisify(execFile);
import { createReleaseArchive } from "./package-release-archive.mjs";
const __filename = fileURLToPath(import.meta.url);
const __dirname = path.dirname(__filename);
const projectRoot = path.resolve(__dirname, "..");
@@ -17,8 +14,9 @@ const archivePath = path.join(
await mkdir(releaseDir, { recursive: true });
await rm(archivePath, { force: true });
await execFileAsync("zip", ["-X", "-r", archivePath, "."], {
cwd: sourceDir
await createReleaseArchive({
archivePath,
sourceDir
});
console.log(`Internal archive created at ${archivePath}`);