Skip to content

Commit

Permalink
fix(vite-plugin-nitro): produce consistent builds for CSR mode (#1011)
Browse files Browse the repository at this point in the history
  • Loading branch information
brandonroberts authored Apr 8, 2024
1 parent 62f0f86 commit d97dceb
Show file tree
Hide file tree
Showing 6 changed files with 49 additions and 10 deletions.
1 change: 1 addition & 0 deletions packages/vite-plugin-nitro/src/lib/build-server.ts
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@ export async function buildServer(
await copyPublicAssets(nitro);

if (
options?.ssr &&
nitroConfig?.prerender?.routes &&
nitroConfig?.prerender?.routes.find((route) => route === '/')
) {
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
import { eventHandler } from 'h3';

// @ts-ignore
import template from '#analog/index';

export default eventHandler(async () => {
return template;
});
8 changes: 8 additions & 0 deletions packages/vite-plugin-nitro/src/lib/runtime/renderer-client.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
import { eventHandler } from 'h3';

// @ts-ignore
import template from '#analog/index';

export default eventHandler(async () => {
return template;
});
15 changes: 15 additions & 0 deletions packages/vite-plugin-nitro/src/lib/vite-plugin-nitro.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -58,8 +58,11 @@ describe('nitro', () => {
...mockNitroConfig,
alias: expect.anything(),
prerender: { routes: ['/'] },
renderer: expect.anything(),
rollupConfig: expect.anything(),
handlers: expect.anything(),
publicAssets: expect.anything(),
serverAssets: expect.anything(),
}
);
});
Expand Down Expand Up @@ -88,7 +91,10 @@ describe('nitro', () => {
prerender: { routes: ['/'] },
alias: expect.anything(),
rollupConfig: expect.anything(),
renderer: expect.anything(),
handlers: expect.anything(),
publicAssets: expect.anything(),
serverAssets: expect.anything(),
}
);
});
Expand Down Expand Up @@ -125,12 +131,15 @@ describe('nitro', () => {
...mockNitroConfig,
alias: expect.anything(),
rollupConfig: expect.anything(),
renderer: expect.anything(),
handlers: expect.anything(),
preset: undefined,
prerender: {
...mockNitroConfig.prerender,
routes: [],
},
publicAssets: expect.anything(),
serverAssets: expect.anything(),
}
);
expect(buildSitemapImportSpy).not.toHaveBeenCalled();
Expand Down Expand Up @@ -172,7 +181,10 @@ describe('nitro', () => {
},
alias: expect.anything(),
rollupConfig: expect.anything(),
renderer: expect.anything(),
handlers: expect.anything(),
publicAssets: expect.anything(),
serverAssets: expect.anything(),
}
);

Expand Down Expand Up @@ -237,8 +249,11 @@ describe('nitro', () => {
routes: ['/blog', '/about', '/blog/first', '/blog/02-second'],
},
alias: expect.anything(),
publicAssets: expect.anything(),
rollupConfig: expect.anything(),
renderer: expect.anything(),
handlers: expect.anything(),
serverAssets: expect.anything(),
}
);

Expand Down
24 changes: 15 additions & 9 deletions packages/vite-plugin-nitro/src/lib/vite-plugin-nitro.ts
Original file line number Diff line number Diff line change
Expand Up @@ -75,7 +75,12 @@ export function nitro(options?: Options, nitroOptions?: NitroConfig): Plugin[] {
const rendererEntry =
filePrefix +
normalizePath(
join(__dirname, `runtime/renderer${filePrefix ? '.mjs' : ''}`)
join(
__dirname,
`runtime/renderer${!options?.ssr ? '-client' : ''}${
filePrefix ? '.mjs' : ''
}`
)
);

nitroConfig = {
Expand Down Expand Up @@ -144,6 +149,15 @@ export function nitro(options?: Options, nitroOptions?: NitroConfig): Plugin[] {
};

if (isBuild) {
nitroConfig.publicAssets = [{ dir: clientOutputPath }];
nitroConfig.serverAssets = [
{
baseName: 'public',
dir: clientOutputPath,
},
];
nitroConfig.renderer = rendererEntry;

if (isEmptyPrerenderRoutes(options)) {
nitroConfig.prerender = {};
nitroConfig.prerender.routes = ['/'];
Expand Down Expand Up @@ -196,13 +210,6 @@ export function nitro(options?: Options, nitroOptions?: NitroConfig): Plugin[] {
if (ssrBuild) {
nitroConfig = {
...nitroConfig,
publicAssets: [{ dir: clientOutputPath }],
serverAssets: [
{
baseName: 'public',
dir: clientOutputPath,
},
],
externals: {
...nitroOptions?.externals,
external: [
Expand All @@ -216,7 +223,6 @@ export function nitro(options?: Options, nitroOptions?: NitroConfig): Plugin[] {
'zone.js/fesm2015/zone-node',
...(nitroOptions?.moduleSideEffects || []),
],
renderer: rendererEntry,
handlers: [
{
handler: apiMiddlewareHandler,
Expand Down
3 changes: 2 additions & 1 deletion packages/vite-plugin-nitro/tsconfig.lib.json
Original file line number Diff line number Diff line change
Expand Up @@ -8,8 +8,9 @@
},
"include": ["src/**/*.ts"],
"exclude": [
"jest.config.ts",
"vite.config.ts",
"src/**/*.spec.ts",
"src/**/*.spec.data.ts",
"src/**/*.test.ts",
"src/lib/runtime/*.ts"
]
Expand Down

0 comments on commit d97dceb

Please sign in to comment.