From 39747ce095c4b17e8a36381a91d34e6e2f889cb9 Mon Sep 17 00:00:00 2001 From: Daniel Roe Date: Mon, 6 Feb 2023 15:25:24 -0800 Subject: [PATCH] perf(vite): use stub entry in vite server build when `ssr: false ` (#18782) --- packages/nuxt/src/app/entry-spa.ts | 1 + packages/vite/src/server.ts | 11 ++++++----- 2 files changed, 7 insertions(+), 5 deletions(-) create mode 100644 packages/nuxt/src/app/entry-spa.ts diff --git a/packages/nuxt/src/app/entry-spa.ts b/packages/nuxt/src/app/entry-spa.ts new file mode 100644 index 000000000..ead516c97 --- /dev/null +++ b/packages/nuxt/src/app/entry-spa.ts @@ -0,0 +1 @@ +export default () => {} diff --git a/packages/vite/src/server.ts b/packages/vite/src/server.ts index 085db8f5d..13d27690b 100644 --- a/packages/vite/src/server.ts +++ b/packages/vite/src/server.ts @@ -2,7 +2,7 @@ import { resolve } from 'pathe' import * as vite from 'vite' import vuePlugin from '@vitejs/plugin-vue' import viteJsxPlugin from '@vitejs/plugin-vue-jsx' -import { logger, resolveModule } from '@nuxt/kit' +import { logger, resolveModule, resolvePath } from '@nuxt/kit' import { joinURL, withoutLeadingSlash, withTrailingSlash } from 'ufo' import type { ViteBuildContext, ViteOptions } from './vite' import { cacheDirPlugin } from './plugins/cache-dir' @@ -14,8 +14,9 @@ import { transpile } from './utils/transpile' export async function buildServer (ctx: ViteBuildContext) { const _resolve = (id: string) => resolveModule(id, { paths: ctx.nuxt.options.modulesDir }) const helper = ctx.nuxt.options.nitro.imports !== false ? '' : 'globalThis.' + const entry = ctx.nuxt.options.ssr ? ctx.entry : await resolvePath(resolve(ctx.nuxt.options.appDir, 'entry-spa')) const serverConfig: vite.InlineConfig = vite.mergeConfig(ctx.config, { - entry: ctx.entry, + entry, base: ctx.nuxt.options.dev ? joinURL(ctx.nuxt.options.app.baseURL.replace(/^\.\//, '/') || '/', ctx.nuxt.options.app.buildAssetsDir) : undefined, @@ -47,7 +48,7 @@ export async function buildServer (ctx: ViteBuildContext) { 'typeof XMLHttpRequest': '"undefined"' }, optimizeDeps: { - entries: [ctx.entry] + entries: ctx.nuxt.options.ssr ? [ctx.entry] : [] }, resolve: { alias: { @@ -82,9 +83,9 @@ export async function buildServer (ctx: ViteBuildContext) { build: { sourcemap: ctx.nuxt.options.sourcemap.server ? ctx.config.build?.sourcemap ?? true : false, outDir: resolve(ctx.nuxt.options.buildDir, 'dist/server'), - ssr: ctx.nuxt.options.ssr ?? true, + ssr: true, rollupOptions: { - input: ctx.entry, + input: entry, external: ['#internal/nitro', ...ctx.nuxt.options.experimental.externalVue ? ['vue', 'vue-router'] : []], output: { entryFileNames: 'server.mjs',