From 49bfa2d37984473727ad573b50ffe079558c6457 Mon Sep 17 00:00:00 2001 From: Daniel Roe Date: Wed, 10 May 2023 10:54:01 +0100 Subject: [PATCH 1/3] fix(vite): expand allow dirs to app deps --- packages/vite/src/vite.ts | 25 ++++++++++++++++++++----- 1 file changed, 20 insertions(+), 5 deletions(-) diff --git a/packages/vite/src/vite.ts b/packages/vite/src/vite.ts index 24e9d80b38e8..e89bdfa59e44 100644 --- a/packages/vite/src/vite.ts +++ b/packages/vite/src/vite.ts @@ -1,5 +1,6 @@ +import { existsSync } from 'node:fs' import * as vite from 'vite' -import { join, resolve } from 'pathe' +import { dirname, join, resolve } from 'pathe' import type { Nuxt, ViteConfig } from '@nuxt/schema' import { addVitePlugin, isIgnored, logger, resolvePath } from '@nuxt/kit' import replace from '@rollup/plugin-replace' @@ -27,6 +28,23 @@ export async function bundle (nuxt: Nuxt) { const useAsyncEntry = nuxt.options.experimental.asyncEntry || (nuxt.options.vite.devBundler === 'vite-node' && nuxt.options.dev) const entry = await resolvePath(resolve(nuxt.options.appDir, useAsyncEntry ? 'entry.async' : 'entry')) + + let allowDirs = [ + nuxt.options.appDir, + nuxt.options.workspaceDir, + ...nuxt.options._layers.map(l => l.config.rootDir), + ...nuxt.apps.default?.components.map(c => dirname(c.filePath)), + ...nuxt.apps.default?.plugins.map(p => dirname(p.src)), + ...nuxt.apps.default?.middleware.map(m => dirname(m.path)), + ...Object.values(nuxt.apps.default?.layouts || {}).map(l => dirname(l.file)), + dirname(nuxt.apps.default.rootComponent!), + dirname(nuxt.apps.default.errorComponent!) + ].filter(d => d && existsSync(d)) + + for (const dir of allowDirs) { + allowDirs = allowDirs.filter(d => !d.startsWith(dir) || d === dir) + } + const ctx: ViteBuildContext = { nuxt, entry, @@ -88,10 +106,7 @@ export async function bundle (nuxt: Nuxt) { server: { watch: { ignored: isIgnored }, fs: { - allow: [ - nuxt.options.appDir, - ...nuxt.options._layers.map(l => l.config.rootDir) - ] + allow: allowDirs } } } satisfies ViteConfig, From 33d490a88c4d3c8abcd99607ecec7f6d7cc07cf6 Mon Sep 17 00:00:00 2001 From: Daniel Roe Date: Wed, 10 May 2023 13:14:57 +0100 Subject: [PATCH 2/3] perf: deduplicate dirs --- packages/vite/src/vite.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/vite/src/vite.ts b/packages/vite/src/vite.ts index e89bdfa59e44..5e609470b885 100644 --- a/packages/vite/src/vite.ts +++ b/packages/vite/src/vite.ts @@ -106,7 +106,7 @@ export async function bundle (nuxt: Nuxt) { server: { watch: { ignored: isIgnored }, fs: { - allow: allowDirs + allow: [...new Set(allowDirs)] } } } satisfies ViteConfig, From cbe7e110356b4e0f109a94176db84c23ba5b8744 Mon Sep 17 00:00:00 2001 From: Daniel Roe Date: Wed, 10 May 2023 13:31:05 +0100 Subject: [PATCH 3/3] fix: support all `apps` --- packages/vite/src/vite.ts | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/packages/vite/src/vite.ts b/packages/vite/src/vite.ts index 5e609470b885..3eb003ff67bd 100644 --- a/packages/vite/src/vite.ts +++ b/packages/vite/src/vite.ts @@ -33,12 +33,14 @@ export async function bundle (nuxt: Nuxt) { nuxt.options.appDir, nuxt.options.workspaceDir, ...nuxt.options._layers.map(l => l.config.rootDir), - ...nuxt.apps.default?.components.map(c => dirname(c.filePath)), - ...nuxt.apps.default?.plugins.map(p => dirname(p.src)), - ...nuxt.apps.default?.middleware.map(m => dirname(m.path)), - ...Object.values(nuxt.apps.default?.layouts || {}).map(l => dirname(l.file)), - dirname(nuxt.apps.default.rootComponent!), - dirname(nuxt.apps.default.errorComponent!) + ...Object.values(nuxt.apps).flatMap(app => [ + ...app.components.map(c => dirname(c.filePath)), + ...app.plugins.map(p => dirname(p.src)), + ...app.middleware.map(m => dirname(m.path)), + ...Object.values(app.layouts || {}).map(l => dirname(l.file)), + dirname(nuxt.apps.default.rootComponent!), + dirname(nuxt.apps.default.errorComponent!) + ]) ].filter(d => d && existsSync(d)) for (const dir of allowDirs) {