diff --git a/.changeset/funny-planes-lick.md b/.changeset/funny-planes-lick.md new file mode 100644 index 000000000000..c2fcaf85c484 --- /dev/null +++ b/.changeset/funny-planes-lick.md @@ -0,0 +1,5 @@ +--- +'@astrojs/cloudflare': patch +--- + +Improves prebundling of internal Astro modules diff --git a/packages/astro/src/manifest/serialized.ts b/packages/astro/src/manifest/serialized.ts index 2ee6e05d768b..82f133f97e4d 100644 --- a/packages/astro/src/manifest/serialized.ts +++ b/packages/astro/src/manifest/serialized.ts @@ -23,6 +23,7 @@ import { VIRTUAL_PAGES_MODULE_ID } from '../vite-plugin-pages/index.js'; import { ASTRO_RENDERERS_MODULE_ID } from '../vite-plugin-renderers/index.js'; import { ASTRO_ROUTES_MODULE_ID } from '../vite-plugin-routes/index.js'; +// This is used by Cloudflare optimizeDeps config export const SERIALIZED_MANIFEST_ID = 'virtual:astro:manifest'; export const SERIALIZED_MANIFEST_RESOLVED_ID = '\0' + SERIALIZED_MANIFEST_ID; diff --git a/packages/astro/src/toolbar/vite-plugin-dev-toolbar.ts b/packages/astro/src/toolbar/vite-plugin-dev-toolbar.ts index e0c205d9be5c..ab46509751bc 100644 --- a/packages/astro/src/toolbar/vite-plugin-dev-toolbar.ts +++ b/packages/astro/src/toolbar/vite-plugin-dev-toolbar.ts @@ -3,6 +3,7 @@ import { telemetry } from '../events/index.js'; import { eventAppToggled } from '../events/toolbar.js'; import type { AstroPluginOptions } from '../types/astro.js'; +// This is used by Cloudflare optimizeDeps config const VIRTUAL_MODULE_ID = 'astro:toolbar:internal'; const RESOLVED_VIRTUAL_MODULE_ID = '\0' + VIRTUAL_MODULE_ID; diff --git a/packages/astro/src/vite-plugin-adapter-config/index.ts b/packages/astro/src/vite-plugin-adapter-config/index.ts index 1335651124e5..216b5bc87e3e 100644 --- a/packages/astro/src/vite-plugin-adapter-config/index.ts +++ b/packages/astro/src/vite-plugin-adapter-config/index.ts @@ -2,6 +2,7 @@ import type { Plugin as VitePlugin } from 'vite'; import { isAstroServerEnvironment } from '../environments.js'; import type { AstroSettings } from '../types/astro.js'; +// This is used by Cloudflare's optimizeDeps const VIRTUAL_CLIENT_ID = 'virtual:astro:adapter-config/client'; const RESOLVED_VIRTUAL_CLIENT_ID = '\0' + VIRTUAL_CLIENT_ID; diff --git a/packages/astro/src/vite-plugin-css/index.ts b/packages/astro/src/vite-plugin-css/index.ts index 25eaba5b92ce..54925c522d26 100644 --- a/packages/astro/src/vite-plugin-css/index.ts +++ b/packages/astro/src/vite-plugin-css/index.ts @@ -18,6 +18,7 @@ const MODULE_DEV_CSS = 'virtual:astro:dev-css'; const RESOLVED_MODULE_DEV_CSS = '\0' + MODULE_DEV_CSS; const MODULE_DEV_CSS_PREFIX = 'virtual:astro:dev-css:'; const RESOLVED_MODULE_DEV_CSS_PREFIX = '\0' + MODULE_DEV_CSS_PREFIX; +// This is used by Cloudflare optimizeDeps config const MODULE_DEV_CSS_ALL = 'virtual:astro:dev-css-all'; const RESOLVED_MODULE_DEV_CSS_ALL = '\0' + MODULE_DEV_CSS_ALL; const ASTRO_CSS_EXTENSION_POST_PATTERN = '@_@'; diff --git a/packages/integrations/cloudflare/src/index.ts b/packages/integrations/cloudflare/src/index.ts index 2b8df02f9398..a4377de5d00e 100644 --- a/packages/integrations/cloudflare/src/index.ts +++ b/packages/integrations/cloudflare/src/index.ts @@ -247,14 +247,24 @@ export default function createIntegration(args?: Options): AstroIntegration { 'astro > es-module-lexer', 'astro > unstorage', 'astro > neotraverse/modern', + 'astro/app', + 'astro/compiler-runtime', ], exclude: [ 'unstorage/drivers/cloudflare-kv-binding', - 'astro:toolbar:internal', - 'virtual:astro:middleware', + 'astro:*', + 'virtual:astro:*', + 'virtual:astro-cloudflare:*', ], }, }; + } else if (environmentName === 'client') { + return { + optimizeDeps: { + include: ['astro/runtime/client/dev-toolbar/entrypoint.js'], + exclude: ['astro:*'], + }, + }; } }, }, diff --git a/packages/integrations/cloudflare/test/fixtures/vite-plugin/astro.config.mjs b/packages/integrations/cloudflare/test/fixtures/vite-plugin/astro.config.mjs index ac0edd013250..92b700aa9389 100644 --- a/packages/integrations/cloudflare/test/fixtures/vite-plugin/astro.config.mjs +++ b/packages/integrations/cloudflare/test/fixtures/vite-plugin/astro.config.mjs @@ -40,6 +40,7 @@ export default defineConfig({ SECRET: envField.string({ context: 'server', access: 'secret' }), } }, + prefetch: true, experimental: { fonts: [{ provider: fontProviders.google(),