summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--packages/integrations/cloudflare/src/index.ts21
1 files changed, 21 insertions, 0 deletions
diff --git a/packages/integrations/cloudflare/src/index.ts b/packages/integrations/cloudflare/src/index.ts
index 1675dfc1f..3f55f693c 100644
--- a/packages/integrations/cloudflare/src/index.ts
+++ b/packages/integrations/cloudflare/src/index.ts
@@ -259,6 +259,21 @@ export default function createIntegration(args?: Options): AstroIntegration {
vite.build.rollupOptions.output.banner ||=
'globalThis.process ??= {}; globalThis.process.env ??= {};';
+ // @ts-expect-error
+ vite.build.rollupOptions.output.manualChunks = (id: string) => {
+ if (id.includes('node_modules')) {
+ if (id.indexOf('node_modules') !== -1) {
+ const basic = id.toString().split('node_modules/')[1];
+ const sub1 = basic.split('/')[0];
+ if (sub1 !== '.pnpm') {
+ return sub1.toString();
+ }
+ const name2 = basic.split('/')[1];
+ return name2.split('@')[name2[0] === '@' ? 1 : 0].toString();
+ }
+ }
+ };
+
vite.build.rollupOptions.external = _config.vite.build?.rollupOptions?.external ?? [];
// Cloudflare env is only available per request. This isn't feasible for code that access env vars
@@ -278,6 +293,12 @@ export default function createIntegration(args?: Options): AstroIntegration {
vite.resolve.conditions = vite.resolve.conditions.filter(
(c) => c !== 'workerd' && c !== 'worker'
);
+
+ vite.build ||= {};
+ vite.build.rollupOptions ||= {};
+ vite.build.rollupOptions.output ||= {};
+ // @ts-expect-error
+ vite.build.rollupOptions.output.manualChunks = undefined;
}
},
'astro:build:done': async ({ pages, routes, dir, logger }) => {