From f78e392e715a23b5ad664b9de33a41ae319a4448 Mon Sep 17 00:00:00 2001 From: Stewart Allen Date: Wed, 12 Nov 2025 00:46:25 -0500 Subject: [PATCH] add src/dst bundle inputs, prod bundle config --- app.js | 11 +++++++++++ bin/bundle-prod.config.json | 23 +++++++++++++++++++++++ bin/bundler.mjs | 15 +++++++++++++-- package.json | 9 +++++---- 4 files changed, 52 insertions(+), 6 deletions(-) create mode 100644 bin/bundle-prod.config.json diff --git a/app.js b/app.js index a6e439d2..b871a598 100644 --- a/app.js +++ b/app.js @@ -204,6 +204,17 @@ function init(mod) { fs.mkdirSync(`alt/main`, { recursive: true }); let body = fs.readFileSync(src); fs.writeFileSync(`alt/main/${key}.js`, body + val); + if (true) { + // packed + src= `src/pack/${key}-main.js`; + if (!fs.existsSync(src)) { + logger.log('missing:', src); + continue; + } + fs.mkdirSync(`alt/pack`, { recursive: true }); + body = fs.readFileSync(src); + fs.writeFileSync(`alt/pack/${key}-main.js`, body + val); + } } } }; diff --git a/bin/bundle-prod.config.json b/bin/bundle-prod.config.json new file mode 100644 index 00000000..f3a21fd0 --- /dev/null +++ b/bin/bundle-prod.config.json @@ -0,0 +1,23 @@ +{ + "compress": true, + "outputs": { + "bundle": "./web/boot/bundle-{version}.bin" + }, + "inputs": [ + { "root": "web/moto", "prefix": "moto" }, + { "root": "web/kiri", "prefix": "kiri" }, + { "root": "web/font", "prefix": "font" }, + { "root": "src/wasm", "prefix": "wasm" }, + { "root": "src/wasm", "prefix": "lib/kiri/wasm" }, + { "src": "alt/pack/kiri-main.js", "dst": "lib/main/kiri.js" }, + { "src": "src/pack/kiri-main.js", "dst": "lib/main/kiri.js" }, + { "src": "src/pack/kiri-work.js", "dst": "lib/kiri/run/worker.js" }, + { "src": "src/pack/kiri-pool.js", "dst": "lib/kiri/run/minion.js" }, + { "src": "src/gpu/raster-worker.js", "dst": "lib/gpu/raster-worker.js" }, + { "src": "src/ext/tween.js", "dst": "lib/ext/tween.js" } + ], + "excludes": [ + "src/pack", + "web/boot/bundle*" + ] +} diff --git a/bin/bundler.mjs b/bin/bundler.mjs index 12f43186..5bf621fa 100644 --- a/bin/bundler.mjs +++ b/bin/bundler.mjs @@ -39,8 +39,18 @@ function* walk(dir, seen = new Set()) { let entries = []; let virtMap = new Set(); for (const input of inputs) { - const root = input.root; - const prefix = input.prefix || ''; + const { root, prefix, src, dst } = input; + + if (src && dst) { + if (virtMap.has(dst)) { + console.log('pre-existing', dst); + } else { + entries.push({ file: src, virt: dst }); + virtMap.add(dst); + } + } + + if (root) for (const file of walk(root)) { const rel = path.relative(root, file).replace(/\\/g, '/'); const virt = prefix ? `${prefix}/${rel}` : rel; @@ -115,6 +125,7 @@ for (const { file, virt } of entries) { entryMeta.push(record); dataParts.push(data); offset += data.length; + if (debug) console.log('write', virt, data.length); } } diff --git a/package.json b/package.json index 47cea945..3c508215 100644 --- a/package.json +++ b/package.json @@ -93,16 +93,17 @@ "build-win-arm": "npm run build -- --win --arm64", "build-mac": "npm run build -- --mac --arm64", "build-mac-intel": "npm run build -- --mac --x64", - "bundle": "npm run dev -- --alt --dryrun && COMPRESS=1 node bin/bundler.mjs", + "bundle": "npm run dev -- --alt --dryrun && COMPRESS=1 node bin/bundler.mjs bin/bundle-prod.config.json", "bundle:dev": "npm run dev -- --alt --dryrun && node bin/bundler.mjs", - "clean": "rm -rf build data dist src/pack tmp src.old web.old .bcache", + "bundle:prod": "npm run dev -- --alt --dryrun && node bin/bundler.mjs bin/bundle-prod.config.json", + "clean": "rm -rf alt build data dist src/pack tmp src.old web.old .bcache", "docs-dev": "docusaurus start --config conf/docusaurus.config.js", "docs-build": "docusaurus build --config conf/docusaurus.config.js", "docs-serve": "docusaurus serve --config conf/docusaurus.config.js", "docs-check": "prettier --config ./conf/prettier.config.js ./docs --check", "dev": "npm run webpack-ext && gs-app-server --debug --single", - "prod": "npm run webpack-ext && npm run webpack-src prod && npm run bundle && gs-app-server", - "prod-pack": "npm run webpack-ext && npm run webpack-src prod", + "prod": "npm run webpack-ext && npm run webpack-src prod && gs-app-server", + "prod-pack": "npm run webpack-ext && npm run webpack-src prod && npm run bundle", "prod-dryrun": "gs-app-server --dryrun", "start": "npm run prebuild prod && electron .", "start-dev": "npm run prebuild prod && electron . --devel",