Skip to content

Commit

Permalink
Fix Cloudflare directory mode regression (#6046)
Browse files Browse the repository at this point in the history
* Fix Cloudflare directory mode regression

* Adding a changeset
  • Loading branch information
matthewp authored Jan 30, 2023
1 parent d9787a6 commit df32011
Show file tree
Hide file tree
Showing 3 changed files with 33 additions and 6 deletions.
5 changes: 5 additions & 0 deletions .changeset/long-boats-perform.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
'@astrojs/cloudflare': patch
---

Cloudflare fix for building to directory mode
14 changes: 8 additions & 6 deletions packages/integrations/cloudflare/src/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ import esbuild from 'esbuild';
import * as fs from 'fs';
import * as os from 'os';
import glob from 'tiny-glob';
import { fileURLToPath } from 'url';
import { fileURLToPath, pathToFileURL } from 'url';

type Options = {
mode: 'directory' | 'advanced';
Expand Down Expand Up @@ -89,9 +89,11 @@ export default function createIntegration(args?: Options): AstroIntegration {
}
},
'astro:build:done': async ({ pages }) => {
const entryPath = fileURLToPath(new URL(_buildConfig.serverEntry, _buildConfig.server)),
entryUrl = new URL(_buildConfig.serverEntry, _config.outDir),
buildPath = fileURLToPath(entryUrl);
const entryPath = fileURLToPath(new URL(_buildConfig.serverEntry, _buildConfig.server));
const entryUrl = new URL(_buildConfig.serverEntry, _config.outDir);
const buildPath = fileURLToPath(entryUrl);
// A URL for the final build path after renaming
const finalBuildUrl = pathToFileURL(buildPath.replace(/\.mjs$/, '.js'));

await esbuild.build({
target: 'es2020',
Expand All @@ -108,7 +110,7 @@ export default function createIntegration(args?: Options): AstroIntegration {
});

// Rename to worker.js
await fs.promises.rename(buildPath, buildPath.replace(/\.mjs$/, '.js'));
await fs.promises.rename(buildPath, finalBuildUrl);

// throw the server folder in the bin
const serverUrl = new URL(_buildConfig.server);
Expand Down Expand Up @@ -204,7 +206,7 @@ export default function createIntegration(args?: Options): AstroIntegration {
const functionsUrl = new URL(`file://${process.cwd()}/functions/`);
await fs.promises.mkdir(functionsUrl, { recursive: true });
const directoryUrl = new URL('[[path]].js', functionsUrl);
await fs.promises.rename(entryUrl, directoryUrl);
await fs.promises.rename(finalBuildUrl, directoryUrl);
}
},
},
Expand Down
20 changes: 20 additions & 0 deletions packages/integrations/cloudflare/test/directory.test.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
import { loadFixture, runCLI } from './test-utils.js';
import { expect } from 'chai';
import * as cheerio from 'cheerio';
import cloudflare from '../dist/index.js';

describe('mode: "directory"', () => {
/** @type {import('./test-utils').Fixture} */
let fixture;

before(async () => {
fixture = await loadFixture({
root: './fixtures/basics/',
adapter: cloudflare({ mode: 'directory' })
});
});

it('Builds', async () => {
await fixture.build();
});
});

0 comments on commit df32011

Please sign in to comment.