diff options
-rw-r--r-- | .changeset/moody-waves-think.md | 11 | ||||
-rw-r--r-- | packages/astro/src/core/config/vite-load.ts | 15 |
2 files changed, 12 insertions, 14 deletions
diff --git a/.changeset/moody-waves-think.md b/.changeset/moody-waves-think.md new file mode 100644 index 000000000..9ae99f190 --- /dev/null +++ b/.changeset/moody-waves-think.md @@ -0,0 +1,11 @@ +--- +'astro': major +--- + +Updates the Astro config loading flow to ignore processing locally-linked dependencies with Vite (e.g. `npm link`, in a monorepo, etc). Instead, they will be normally imported by the Node.js runtime the same way as other dependencies from `node_modules`. + +Previously, Astro would process locally-linked dependencies which were able to use Vite features like TypeScript when imported by the Astro config file. + +However, this caused confusion as integration authors may test against a package that worked locally, but not when published. This method also restricts using CJS-only dependencies because Vite requires the code to be ESM. Therefore, Astro's behaviour is now changed to ignore processing any type of dependencies by Vite. + +In most cases, make sure your locally-linked dependencies are built to JS before running the Astro project, and the config loading should work as before. diff --git a/packages/astro/src/core/config/vite-load.ts b/packages/astro/src/core/config/vite-load.ts index 8c953dde6..cf6e4a0b0 100644 --- a/packages/astro/src/core/config/vite-load.ts +++ b/packages/astro/src/core/config/vite-load.ts @@ -11,20 +11,7 @@ async function createViteServer(root: string, fs: typeof fsType): Promise<ViteDe optimizeDeps: { noDiscovery: true }, clearScreen: false, appType: 'custom', - ssr: { - // NOTE: Vite doesn't externalize linked packages by default. During testing locally, - // these dependencies trip up Vite's dev SSR transform. Awaiting upstream feature: - // https://github.com/vitejs/vite/pull/10939 - external: [ - '@astrojs/tailwind', - '@astrojs/mdx', - '@astrojs/react', - '@astrojs/preact', - '@astrojs/sitemap', - '@astrojs/markdoc', - '@astrojs/db', - ], - }, + ssr: { external: true }, plugins: [loadFallbackPlugin({ fs, root: pathToFileURL(root) })], }); |