feat: F5.6b server F as an image: the editor from F itself, one stack per environment
F hands out the editor's page and bundle (editor/ beside main.mjs, or FILIUS_EDITOR_DIR): GET and HEAD only, one wall against leaving the folder, F's own routes first, assets/ cached a year, the rest asked for again; the build lays .br and .gz beside the files and F sends the better one the browser takes (bundle 695 KB to 212 KB). deploy/Dockerfile: two stages, Node 24, no node_modules, not root. deploy/docker-compose.yml with an env file per environment: the file sets the stack's name, volume, image tag and port (test 8081, production 8080). Measured with both stacks side by side behind nginx and Chromium. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
@@ -10,6 +10,11 @@ import type { DesktopView, DeviceSheet, TopologyView } from '@mdg-filius/doc';
|
||||
|
||||
const config = join(dirname(fileURLToPath(import.meta.url)), '../vite.config.ts');
|
||||
|
||||
/** The editor built into `outDir`, as the image's build builds it. */
|
||||
export async function buildEditor(outDir: string): Promise<void> {
|
||||
await build({ configFile: config, logLevel: 'silent', build: { outDir, emptyOutDir: true } });
|
||||
}
|
||||
|
||||
export async function serveEditor(): Promise<{ readonly base: string; readonly close: () => Promise<void> }> {
|
||||
await build({ configFile: config, logLevel: 'silent' });
|
||||
const server: PreviewServer = await preview({ configFile: config, preview: { port: 0 }, logLevel: 'silent' });
|
||||
|
||||
Reference in New Issue
Block a user