From aba771e35594f8be170505fef2c1193804ab0bf9 Mon Sep 17 00:00:00 2001 From: bitterpanda Date: Wed, 3 Dec 2025 14:14:55 +0100 Subject: [PATCH 1/6] add --compress GZip option to build --- build.js | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/build.js b/build.js index 4711ce6..870d9f8 100644 --- a/build.js +++ b/build.js @@ -109,7 +109,11 @@ function buildSafeChainBinary(target) { ? resolve("node_modules/.bin/pkg.cmd") : resolve("node_modules/.bin/pkg"); - const pkg = spawn(pkgBin, ["./build/package.json", "-t", target], { + let pkgArgs = ["./build/package.json", "-t", "target"]; + + pkgArgs += ["--compress", "GZip"]; + + const pkg = spawn(pkgBin, pkgArgs, { stdio: "inherit", shell: true, }); From 0a4c6ed5db937a93310980dd7b9f850dabaa5f29 Mon Sep 17 00:00:00 2001 From: bitterpanda Date: Wed, 3 Dec 2025 16:10:44 +0100 Subject: [PATCH 2/6] fi pkgArgs build --- build.js | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/build.js b/build.js index 2531fb6..91a5215 100644 --- a/build.js +++ b/build.js @@ -119,10 +119,12 @@ function buildSafeChainBinary(target) { ? resolve("node_modules/.bin/pkg.cmd") : resolve("node_modules/.bin/pkg"); - let pkgArgs = ["./build/package.json", "-t", "target"]; + let pkgArgs = []; - pkgArgs += ["--compress", "GZip"]; + // using gzip compression to lower binary size (original is 50MB) + pkgArgs = pkgArgs.concat(["--compress", "GZip"]); + pkgArgs = pkgArgs.concat(["./build/package.json", "-t", target]); const pkg = spawn(pkgBin, pkgArgs, { stdio: "inherit", shell: true, From 7abbd4aee9c92b147bcce350e4b5173bad48928a Mon Sep 17 00:00:00 2001 From: bitterpanda Date: Wed, 3 Dec 2025 16:18:24 +0100 Subject: [PATCH 3/6] report total size at the end --- build.js | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/build.js b/build.js index 91a5215..0f3621d 100644 --- a/build.js +++ b/build.js @@ -1,5 +1,5 @@ import { build } from "esbuild"; -import { mkdir, cp, rm, readFile, writeFile } from "node:fs/promises"; +import { mkdir, cp, rm, readFile, writeFile, stat } from "node:fs/promises"; import { spawn } from "node:child_process"; import { resolve } from "node:path"; @@ -36,8 +36,9 @@ if (!target) { console.log(`- Built safe-chain binary for ${target} (pkg) ✅`) - const endBuildTime = performance.now(); - console.log(`🏁 Finished build in ${((endBuildTime - startBuildTime)/1000).toFixed(2)}s`); + const totalBuildTime = (performance.now() - startBuildTime)/1000; + const totalSizeInMb = (await stat("./dist/safe-chain")).size / (1024*1024); + console.log(`🏁 Finished build in ${totalBuildTime.toFixed(2)}s, total build size: ${totalSizeInMb.toFixed(2)}MB`); })(); async function clearOutputFolder() { From 3a1d9c25af293950e8d2012b63665bd333d9da37 Mon Sep 17 00:00:00 2001 From: bitterpanda Date: Wed, 3 Dec 2025 16:25:42 +0100 Subject: [PATCH 4/6] rm --compress for now --- build.js | 3 --- 1 file changed, 3 deletions(-) diff --git a/build.js b/build.js index 0f3621d..9650b41 100644 --- a/build.js +++ b/build.js @@ -122,9 +122,6 @@ function buildSafeChainBinary(target) { let pkgArgs = []; - // using gzip compression to lower binary size (original is 50MB) - pkgArgs = pkgArgs.concat(["--compress", "GZip"]); - pkgArgs = pkgArgs.concat(["./build/package.json", "-t", target]); const pkg = spawn(pkgBin, pkgArgs, { stdio: "inherit", From 6fa648d6cabf2f82e23de83abf8e48037dfa28a0 Mon Sep 17 00:00:00 2001 From: bitterpanda Date: Wed, 3 Dec 2025 16:27:25 +0100 Subject: [PATCH 5/6] make compat with windows: sze reporting --- build.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build.js b/build.js index 9650b41..43d1ffb 100644 --- a/build.js +++ b/build.js @@ -37,7 +37,7 @@ if (!target) { const totalBuildTime = (performance.now() - startBuildTime)/1000; - const totalSizeInMb = (await stat("./dist/safe-chain")).size / (1024*1024); + const totalSizeInMb = (await stat("./dist/safe-chain" + (process.platform === "win32" ? ".bin" : ""))).size / (1024*1024); console.log(`🏁 Finished build in ${totalBuildTime.toFixed(2)}s, total build size: ${totalSizeInMb.toFixed(2)}MB`); })(); From 75f87678198803addd3482113c1e3d5c600de29c Mon Sep 17 00:00:00 2001 From: bitterpanda Date: Wed, 3 Dec 2025 16:30:19 +0100 Subject: [PATCH 6/6] needs to be safe-chain.exe instead of safe-chain.cmd for size --- build.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build.js b/build.js index 43d1ffb..81619f4 100644 --- a/build.js +++ b/build.js @@ -37,7 +37,7 @@ if (!target) { const totalBuildTime = (performance.now() - startBuildTime)/1000; - const totalSizeInMb = (await stat("./dist/safe-chain" + (process.platform === "win32" ? ".bin" : ""))).size / (1024*1024); + const totalSizeInMb = (await stat("./dist/safe-chain" + (process.platform === "win32" ? ".exe" : ""))).size / (1024*1024); console.log(`🏁 Finished build in ${totalBuildTime.toFixed(2)}s, total build size: ${totalSizeInMb.toFixed(2)}MB`); })();