From a925f41caf1d0140900fb2a2c2183ff5d1972814 Mon Sep 17 00:00:00 2001 From: daishi Date: Fri, 7 Mar 2025 00:00:26 +0900 Subject: [PATCH] refactor dist entries file --- packages/waku/src/lib/builder/build.ts | 18 ++++++++++++------ packages/waku/src/lib/builder/platform-data.ts | 13 +++++++++---- .../src/lib/plugins/vite-plugin-rsc-entries.ts | 3 +++ 3 files changed, 24 insertions(+), 10 deletions(-) diff --git a/packages/waku/src/lib/builder/build.ts b/packages/waku/src/lib/builder/build.ts index c84a67348..e24c1eed5 100644 --- a/packages/waku/src/lib/builder/build.ts +++ b/packages/waku/src/lib/builder/build.ts @@ -22,7 +22,6 @@ import { } from '../utils/path.js'; import { extendViteConfig } from '../utils/vite-config.js'; import { - appendFile, copyFile, createWriteStream, existsSync, @@ -629,11 +628,18 @@ const emitStaticFiles = async ( } await waitForTasks(); const dynamicHtmlPaths = Array.from(dynamicHtmlPathMap); - const code = ` -export const dynamicHtmlPaths = ${JSON.stringify(dynamicHtmlPaths)}; -export const publicIndexHtml = ${JSON.stringify(defaultHtmlStr)}; -`; - await appendFile(distEntriesFile, code); + let distEntriesFileContent = await readFile(distEntriesFile, { + encoding: 'utf8', + }); + distEntriesFileContent = distEntriesFileContent.replace( + 'globalThis.__WAKU_DYNAMIC_HTML_PATHS__', + JSON.stringify(dynamicHtmlPaths), + ); + distEntriesFileContent = distEntriesFileContent.replace( + 'globalThis.__WAKU_PUBLIC_INDEX_HTML__', + JSON.stringify(defaultHtmlStr), + ); + await writeFile(distEntriesFile, distEntriesFileContent); }; // For Deploy diff --git a/packages/waku/src/lib/builder/platform-data.ts b/packages/waku/src/lib/builder/platform-data.ts index bd77b346a..5bd17d087 100644 --- a/packages/waku/src/lib/builder/platform-data.ts +++ b/packages/waku/src/lib/builder/platform-data.ts @@ -1,6 +1,6 @@ import { INTERNAL_iterateSerializablePlatformData } from '../../server.js'; import { joinPath } from '../utils/path.js'; -import { appendFile, mkdir, writeFile } from '../utils/node-fs.js'; +import { mkdir, readFile, writeFile } from '../utils/node-fs.js'; import { DIST_ENTRIES_JS } from './constants.js'; const DIST_PLATFORM_DATA = 'platform-data'; @@ -15,10 +15,14 @@ export const emitPlatformData = async (distDir: string) => { const destFile = joinPath(distDir, DIST_PLATFORM_DATA, key + '.js'); await writeFile(destFile, `export default ${JSON.stringify(data)};`); } - await appendFile( - joinPath(distDir, DIST_ENTRIES_JS), + const distEntriesFile = joinPath(distDir, DIST_ENTRIES_JS); + let distEntriesFileContent = await readFile(distEntriesFile, { + encoding: 'utf8', + }); + distEntriesFileContent = distEntriesFileContent.replace( + 'globalThis.__WAKU_LOAD_PLATFORM_DATA__', ` -export function loadPlatformData(key) { +(key) => { switch (key) { ${Array.from(keys) .map( @@ -31,4 +35,5 @@ export function loadPlatformData(key) { } `, ); + await writeFile(distEntriesFile, distEntriesFileContent); }; diff --git a/packages/waku/src/lib/plugins/vite-plugin-rsc-entries.ts b/packages/waku/src/lib/plugins/vite-plugin-rsc-entries.ts index a151775f3..cb1bff620 100644 --- a/packages/waku/src/lib/plugins/vite-plugin-rsc-entries.ts +++ b/packages/waku/src/lib/plugins/vite-plugin-rsc-entries.ts @@ -39,6 +39,9 @@ export function loadModule(id) { } globalThis.__WAKU_SERVER_IMPORT__ = loadModule; globalThis.__WAKU_CLIENT_IMPORT__ = (id) => loadModule('${opts.ssrDir}/' + id); +export const dynamicHtmlPaths = globalThis.__WAKU_DYNAMIC_HTML_PATHS__; +export const publicIndexHtml = globalThis.__WAKU_PUBLIC_INDEX_HTML__; +export const loadPlatformData = globalThis.__WAKU_LOAD_PLATFORM_DATA__; `; let entriesFile = ''; let configFile = '';