增加生成release包的方法

This commit is contained in:
黑先森
2024-11-25 15:53:42 +08:00
parent 66d8bff8b4
commit 4191a0a12d
3 changed files with 65 additions and 1 deletions
+3 -1
View File
@@ -6,7 +6,8 @@
"version": "1.2.5",
"scripts": {
"dev": "nuxt dev --dotenv env/.env.dev --host 0.0.0.0",
"build": "nuxt generate --dotenv env/.env.prod"
"build": "nuxt generate --dotenv env/.env.prod",
"release": "node zip.js"
},
"devDependencies": {
"@element-plus/icons-vue": "^2.3.1",
@@ -26,6 +27,7 @@
"@types/lodash-es": "^4.17.12",
"@vitejs/plugin-vue-jsx": "^4.1.0",
"@vueuse/core": "^11.2.0",
"archiver": "^7.0.1",
"element-plus": "^2.8.7",
"less": "^4.2.0",
"lodash-es": "^4.17.21",
+3
View File
@@ -59,6 +59,9 @@ importers:
'@vueuse/core':
specifier: ^11.2.0
version: 11.2.0(vue@3.5.12(typescript@5.6.3))
archiver:
specifier: ^7.0.1
version: 7.0.1
element-plus:
specifier: ^2.8.7
version: 2.8.7(vue@3.5.12(typescript@5.6.3))
+59
View File
@@ -0,0 +1,59 @@
const releaseDir = "./src-tauri/target/release";
const releaseDirEasytier = `${releaseDir}/easytier/`;
const releaseExe = `${releaseDir}/easytier-game.exe`;
const deleteEasytierFiles = ["logs/", "guiLogs/"]
const pkg = require("./package.json");
const fileName = `easytier-game_windows_x86_64_${pkg.version}.zip`;
const releaseZipDir = "./release";
const releaseZip = `${releaseZipDir}/${fileName}`;
const fs = require("fs");
const path = require("path");
const archiver = require("archiver");
const output = fs.createWriteStream(path.join(__dirname, releaseZip));
const archive = archiver("zip", {
zlib: { level: 8 } // Sets the compression level.
});
// listen for all archive data to be written
// 'close' event is fired only when a file descriptor is involved
output.on("close", function () {
console.log(archive.pointer() + " total bytes");
console.log(`archiver has been finalized and the output ${releaseZip}`);
});
// This event is fired when the data source is drained no matter what was the data source.
// It is not part of this library but rather from the NodeJS Stream API.
// @see: https://nodejs.org/api/stream.html#stream_event_end
output.on("end", function () {
console.log("Data has been drained");
});
// good practice to catch warnings (ie stat failures and other non-blocking errors)
archive.on("warning", function (err) {
if (err.code === "ENOENT") {
// log warning
} else {
// throw error
throw err;
}
});
archive.on("error", function (err) {
throw err;
});
for(const f of deleteEasytierFiles) {
fs.rmSync(path.join(__dirname, releaseDirEasytier + f), { recursive: true, force: true });
}
const r = path.join(__dirname, releaseZipDir)
if(!fs.existsSync(r)) {
fs.mkdirSync(r);
}
// pipe archive data to the file
archive.pipe(output);
archive
.append(fs.createReadStream(path.join(__dirname, releaseExe)), { name: "easytier-game.exe" })
.directory(path.join(__dirname, releaseDirEasytier), "easytier").finalize();