summaryrefslogtreecommitdiff
path: root/packages/integrations/cloudflare/src
diff options
context:
space:
mode:
authorGravatar Alexander Niebuhr <alexander@nbhr.io> 2024-05-11 07:39:43 +0200
committerGravatar GitHub <noreply@github.com> 2024-05-11 07:39:43 +0200
commit1b65a113f2a1780702f9ea0eaba94ce740ceeb90 (patch)
tree45d81b003deddc9a0461464b675865fd4ec6b72f /packages/integrations/cloudflare/src
parent78a8b71c062eb5a9028eb225f8121b9193bdbaea (diff)
downloadastro-1b65a113f2a1780702f9ea0eaba94ce740ceeb90.tar.gz
astro-1b65a113f2a1780702f9ea0eaba94ce740ceeb90.tar.zst
astro-1b65a113f2a1780702f9ea0eaba94ce740ceeb90.zip
fix(cloudflare): node_modules on prerender pages only (#226)
Diffstat (limited to 'packages/integrations/cloudflare/src')
-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 }) => {