diff options
author | 2025-03-19 13:54:21 +0000 | |
---|---|---|
committer | 2025-03-19 13:54:21 +0000 | |
commit | d5ad591230918db302edc89c1a98436c16a4e0d2 (patch) | |
tree | 0cdc80a178d65c2b05ca45aadeb3e8751a7d6a81 | |
parent | 53abc9d4c8a63a4cfb4c682ed8a3e265cc87561e (diff) | |
download | astro-d5ad591230918db302edc89c1a98436c16a4e0d2.tar.gz astro-d5ad591230918db302edc89c1a98436c16a4e0d2.tar.zst astro-d5ad591230918db302edc89c1a98436c16a4e0d2.zip |
fix: don't attempt to move files after build with base (#13463)
* fix: don't attempt to move files after build with base
* Remove console
* Reword changeset
* Remove unused import
8 files changed, 66 insertions, 13 deletions
diff --git a/.changeset/eight-eyes-swim.md b/.changeset/eight-eyes-swim.md new file mode 100644 index 000000000..3810682dc --- /dev/null +++ b/.changeset/eight-eyes-swim.md @@ -0,0 +1,5 @@ +--- +'@astrojs/cloudflare': patch +--- + +Fixes a bug that caused builds to fail when a base directory is configured diff --git a/packages/integrations/cloudflare/src/index.ts b/packages/integrations/cloudflare/src/index.ts index b0c08cdcf..346cc4021 100644 --- a/packages/integrations/cloudflare/src/index.ts +++ b/packages/integrations/cloudflare/src/index.ts @@ -7,7 +7,7 @@ import type { import type { PluginOption } from 'vite'; import { createReadStream } from 'node:fs'; -import { appendFile, rename, stat } from 'node:fs/promises'; +import { appendFile, stat } from 'node:fs/promises'; import { createInterface } from 'node:readline/promises'; import { appendForwardSlash, @@ -260,18 +260,6 @@ export default function createIntegration(args?: Options): AstroIntegration { }, 'astro:build:done': async ({ pages, dir, logger, assets }) => { await cloudflareModulePlugin.afterBuildCompleted(_config); - const PLATFORM_FILES = ['_headers', '_redirects', '_routes.json']; - if (_config.base !== '/') { - for (const file of PLATFORM_FILES) { - try { - await rename(new URL(file, _config.build.client), new URL(file, _config.outDir)); - } catch (_e) { - logger.error( - `There was an error moving ${file} to the root of the output directory.`, - ); - } - } - } let redirectsExists = false; try { diff --git a/packages/integrations/cloudflare/test/fixtures/with-base/astro.config.mjs b/packages/integrations/cloudflare/test/fixtures/with-base/astro.config.mjs new file mode 100644 index 000000000..04fce6d57 --- /dev/null +++ b/packages/integrations/cloudflare/test/fixtures/with-base/astro.config.mjs @@ -0,0 +1,12 @@ +// @ts-check +import { defineConfig } from 'astro/config'; +import cloudflare from '@astrojs/cloudflare'; + +export default defineConfig({ + base: '/blog/', + output: 'server', + adapter: cloudflare(), + redirects: { + '/a/redirect': '/', + }, +}); diff --git a/packages/integrations/cloudflare/test/fixtures/with-base/package.json b/packages/integrations/cloudflare/test/fixtures/with-base/package.json new file mode 100644 index 000000000..66f76081a --- /dev/null +++ b/packages/integrations/cloudflare/test/fixtures/with-base/package.json @@ -0,0 +1,9 @@ +{ + "name": "@test/astro-cloudflare-with-base", + "version": "0.0.0", + "private": true, + "dependencies": { + "@astrojs/cloudflare": "workspace:*", + "astro": "workspace:*" + } +} diff --git a/packages/integrations/cloudflare/test/fixtures/with-base/src/pages/index.astro b/packages/integrations/cloudflare/test/fixtures/with-base/src/pages/index.astro new file mode 100644 index 000000000..530b283a1 --- /dev/null +++ b/packages/integrations/cloudflare/test/fixtures/with-base/src/pages/index.astro @@ -0,0 +1,4 @@ +--- +export const prerender = false; +--- +<h1>Hello</h1> diff --git a/packages/integrations/cloudflare/test/fixtures/with-base/src/pages/static.astro b/packages/integrations/cloudflare/test/fixtures/with-base/src/pages/static.astro new file mode 100644 index 000000000..677d2ccfc --- /dev/null +++ b/packages/integrations/cloudflare/test/fixtures/with-base/src/pages/static.astro @@ -0,0 +1,4 @@ +--- +export const prerender = true; +--- +<h1>Hello</h1> diff --git a/packages/integrations/cloudflare/test/with-base-path.js b/packages/integrations/cloudflare/test/with-base-path.js new file mode 100644 index 000000000..6ea82b2fb --- /dev/null +++ b/packages/integrations/cloudflare/test/with-base-path.js @@ -0,0 +1,22 @@ +// @ts-check +import * as assert from 'node:assert/strict'; +import { before, describe, it } from 'node:test'; +import { fileURLToPath } from 'node:url'; +import { astroCli } from './_test-utils.js'; +import { existsSync, promises as fs } from 'node:fs'; + +const root = new URL('./fixtures/with-base/', import.meta.url); + +describe('With base', () => { + before(async () => { + await fs.rm(new URL('dist/', root), { recursive: true, force: true }); + await astroCli(fileURLToPath(root), 'build'); + }); + + it('generates platform files in the correct directory', async () => { + for (const file of ['_redirects', '_routes.json', 'blog/static/index.html']) { + assert.ok(existsSync(new URL(`dist/${file}`, root))); + } + }); +}); + diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index f0d28ff48..21368550f 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -4670,6 +4670,15 @@ importers: specifier: workspace:* version: link:../../../../../astro + packages/integrations/cloudflare/test/fixtures/with-base: + dependencies: + '@astrojs/cloudflare': + specifier: workspace:* + version: link:../../.. + astro: + specifier: workspace:* + version: link:../../../../../astro + packages/integrations/cloudflare/test/fixtures/with-solid-js: dependencies: '@astrojs/cloudflare': |