diff --git a/.changeset/loud-bears-glow.md b/.changeset/loud-bears-glow.md new file mode 100644 index 0000000000..05296cb827 --- /dev/null +++ b/.changeset/loud-bears-glow.md @@ -0,0 +1,5 @@ +--- +'astro': patch +--- + +Fix `astro-entry` error on build with multiple JSX frameworks diff --git a/packages/astro/src/core/build/plugins/plugin-component-entry.ts b/packages/astro/src/core/build/plugins/plugin-component-entry.ts index 441bd4eb22..444aa6a19f 100644 --- a/packages/astro/src/core/build/plugins/plugin-component-entry.ts +++ b/packages/astro/src/core/build/plugins/plugin-component-entry.ts @@ -2,7 +2,7 @@ import type { Plugin as VitePlugin } from 'vite'; import type { BuildInternals } from '../internal.js'; import type { AstroBuildPlugin } from '../plugin.js'; -const astroEntryPrefix = '\0astro-entry:'; +export const astroEntryPrefix = '\0astro-entry:'; /** * When adding hydrated or client:only components as Rollup inputs, sometimes we're not using all diff --git a/packages/astro/src/vite-plugin-jsx/index.ts b/packages/astro/src/vite-plugin-jsx/index.ts index 0903a04139..8cab3db9f7 100644 --- a/packages/astro/src/vite-plugin-jsx/index.ts +++ b/packages/astro/src/vite-plugin-jsx/index.ts @@ -13,6 +13,7 @@ import babel from '@babel/core'; import * as colors from 'kleur/colors'; import path from 'path'; import { CONTENT_FLAG, PROPAGATED_ASSET_FLAG } from '../content/index.js'; +import { astroEntryPrefix } from '../core/build/plugins/plugin-component-entry.js'; import { error } from '../core/logger/core.js'; import { removeQueryString } from '../core/path.js'; import { detectImportSource } from './import-source.js'; @@ -139,7 +140,9 @@ export default function jsx({ settings, logging }: AstroPluginJSXOptions): Plugi }, async transform(code, id, opts) { const ssr = Boolean(opts?.ssr); - if (SPECIAL_QUERY_REGEX.test(id)) { + // Skip special queries and astro entries. We skip astro entries here as we know it doesn't contain + // JSX code, and also because we can't detect the import source to apply JSX transforms. + if (SPECIAL_QUERY_REGEX.test(id) || id.startsWith(astroEntryPrefix)) { return null; } id = removeQueryString(id);