Fix Cloudflare directory mode regression (#6046)

* Fix Cloudflare directory mode regression

* Adding a changeset
This commit is contained in:
Matthew Phillips 2023-01-30 14:50:44 -05:00 committed by GitHub
parent d9787a6ff6
commit df32011652
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 33 additions and 6 deletions

View file

@ -0,0 +1,5 @@
---
'@astrojs/cloudflare': patch
---
Cloudflare fix for building to directory mode

View file

@ -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';
@ -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',
@ -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);
@ -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);
}
},
},

View file

@ -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();
});
});