summaryrefslogtreecommitdiff
path: root/packages/integrations/cloudflare/src
diff options
context:
space:
mode:
Diffstat (limited to 'packages/integrations/cloudflare/src')
-rw-r--r--packages/integrations/cloudflare/src/index.ts34
1 files changed, 27 insertions, 7 deletions
diff --git a/packages/integrations/cloudflare/src/index.ts b/packages/integrations/cloudflare/src/index.ts
index 13c8578ee..9cf6412b8 100644
--- a/packages/integrations/cloudflare/src/index.ts
+++ b/packages/integrations/cloudflare/src/index.ts
@@ -1,4 +1,4 @@
-import type { AstroAdapter, AstroConfig, AstroIntegration, BuildConfig } from 'astro';
+import type { AstroAdapter, AstroConfig, AstroIntegration } from 'astro';
import esbuild from 'esbuild';
import * as fs from 'fs';
import { fileURLToPath } from 'url';
@@ -7,6 +7,12 @@ type Options = {
mode: 'directory' | 'advanced';
};
+interface BuildConfig {
+ server: URL;
+ client: URL;
+ serverEntry: string;
+}
+
export function getAdapter(isModeDirectory: boolean): AstroAdapter {
return isModeDirectory
? {
@@ -29,14 +35,26 @@ const SHIM = `globalThis.process = {
export default function createIntegration(args?: Options): AstroIntegration {
let _config: AstroConfig;
let _buildConfig: BuildConfig;
+ let needsBuildConfig = false;
const isModeDirectory = args?.mode === 'directory';
return {
name: '@astrojs/cloudflare',
hooks: {
+ 'astro:config:setup': ({ config, updateConfig }) => {
+ needsBuildConfig = !config.build.client;
+ updateConfig({
+ build: {
+ client: new URL('./static/', config.outDir),
+ server: new URL('./', config.outDir),
+ serverEntry: '_worker.js',
+ }
+ });
+ },
'astro:config:done': ({ setAdapter, config }) => {
setAdapter(getAdapter(isModeDirectory));
_config = config;
+ _buildConfig = config.build;
if (config.output === 'static') {
throw new Error(`
@@ -45,12 +63,6 @@ export default function createIntegration(args?: Options): AstroIntegration {
`);
}
},
- 'astro:build:start': ({ buildConfig }) => {
- _buildConfig = buildConfig;
- buildConfig.client = new URL('./static/', _config.outDir);
- buildConfig.serverEntry = '_worker.js';
- buildConfig.server = new URL('./', _config.outDir);
- },
'astro:build:setup': ({ vite, target }) => {
if (target === 'server') {
vite.resolve = vite.resolve || {};
@@ -69,6 +81,14 @@ export default function createIntegration(args?: Options): AstroIntegration {
vite.ssr.target = vite.ssr.target || 'webworker';
}
},
+ 'astro:build:start': ({ buildConfig }) => {
+ // Backwards compat
+ if(needsBuildConfig) {
+ buildConfig.client = new URL('./static/', _config.outDir);
+ buildConfig.server = new URL('./', _config.outDir);
+ buildConfig.serverEntry = '_worker.js';
+ }
+ },
'astro:build:done': async () => {
const entryUrl = new URL(_buildConfig.serverEntry, _buildConfig.server);
const pkg = fileURLToPath(entryUrl);