server: clean up static assets handling (#24550)
* server: clean up static assets handling * nits * simplify file name handling, use static file name everywhere * cmake/ui : bundle UI assets in an archive * ui : run prettier on post-build.js --------- Co-authored-by: Alde Rojas <hello@alde.dev>
This commit is contained in:
co-authored by
Alde Rojas
parent
d8a24ccee2
commit
57fe1f07c3
@@ -0,0 +1,40 @@
|
||||
#!/usr/bin/env node
|
||||
// Post-build: copy hashed/nested assets to predictable flat names.
|
||||
// No file content is modified — the C++ server handles routing hashed URLs
|
||||
// to the correct stored asset at runtime.
|
||||
//
|
||||
// Copies:
|
||||
// _app/immutable/bundle.HASH.js -> bundle.js
|
||||
// _app/immutable/assets/bundle.HASH.css -> bundle.css
|
||||
// workbox-HEXHASH.js -> workbox.js
|
||||
// _app/version.json -> version.json
|
||||
|
||||
import fs from 'fs';
|
||||
import path from 'path';
|
||||
|
||||
const outDir = process.env.LLAMA_UI_OUT_DIR ?? './dist';
|
||||
|
||||
function findOne(dir, pattern) {
|
||||
const files = fs.readdirSync(dir).filter((f) => pattern.test(f));
|
||||
if (files.length === 0) throw new Error(`post-build: no file matching ${pattern} in ${dir}`);
|
||||
return path.join(dir, files[0]);
|
||||
}
|
||||
|
||||
function copyFlat(src, destName) {
|
||||
const dest = path.join(outDir, destName);
|
||||
fs.copyFileSync(src, dest);
|
||||
console.log(`post-build: ${path.relative(outDir, src)} -> ${destName}`);
|
||||
}
|
||||
|
||||
const bundleJs = findOne(path.join(outDir, '_app/immutable'), /^bundle\.[^.]+\.js$/);
|
||||
const bundleCss = findOne(path.join(outDir, '_app/immutable/assets'), /^bundle\.[^.]+\.css$/);
|
||||
const workbox = findOne(outDir, /^workbox-[0-9a-f]+\.js$/);
|
||||
|
||||
copyFlat(bundleJs, 'bundle.js');
|
||||
copyFlat(bundleCss, 'bundle.css');
|
||||
copyFlat(workbox, 'workbox.js');
|
||||
|
||||
const versionSrc = path.join(outDir, '_app/version.json');
|
||||
if (fs.existsSync(versionSrc)) {
|
||||
copyFlat(versionSrc, 'version.json');
|
||||
}
|
||||
@@ -23,8 +23,7 @@ export function buildInfoPlugin(): Plugin {
|
||||
if (processed) return;
|
||||
processed = true;
|
||||
|
||||
const buildNumber = process.env.LLAMA_BUILD_NUMBER;
|
||||
if (!buildNumber) return;
|
||||
const buildNumber = process.env.LLAMA_BUILD_NUMBER || 'b0000';
|
||||
|
||||
const outDir = resolve(OUTPUT_DIR);
|
||||
const indexPath = resolve(outDir, 'index.html');
|
||||
|
||||
Reference in New Issue
Block a user