summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.changeset/moody-waves-think.md11
-rw-r--r--packages/astro/src/core/config/vite-load.ts15
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) })],
});