From a40a0ff5883c7915dd55881dcebd052b9f94a0eb Mon Sep 17 00:00:00 2001 From: Arsh <69170106+lilnasy@users.noreply.github.com> Date: Tue, 30 Jan 2024 17:16:10 +0000 Subject: [PATCH] fix(ssg): consider trailingSlash for url (#9878) * fix(ssg): consider trailingSlash for url * add changeset --- .changeset/wet-rivers-do.md | 5 +++++ packages/astro/src/core/build/generate.ts | 7 +++++-- packages/astro/test/astro-get-static-paths.test.js | 3 ++- 3 files changed, 12 insertions(+), 3 deletions(-) create mode 100644 .changeset/wet-rivers-do.md diff --git a/.changeset/wet-rivers-do.md b/.changeset/wet-rivers-do.md new file mode 100644 index 000000000000..a11d0f7bcb22 --- /dev/null +++ b/.changeset/wet-rivers-do.md @@ -0,0 +1,5 @@ +--- +"astro": patch +--- + +Fixes an issue where setting trailingSlash to "never" had no effect on `Astro.url`. diff --git a/packages/astro/src/core/build/generate.ts b/packages/astro/src/core/build/generate.ts index 966d7ad84146..e43f1ff5f55f 100644 --- a/packages/astro/src/core/build/generate.ts +++ b/packages/astro/src/core/build/generate.ts @@ -5,6 +5,7 @@ import { fileURLToPath } from 'node:url'; import PQueue from 'p-queue'; import type { OutputAsset, OutputChunk } from 'rollup'; import type { + AstroConfig, AstroSettings, ComponentInstance, GetStaticPathsItem, @@ -455,7 +456,8 @@ function getUrlForPath( pathname: string, base: string, origin: string, - format: 'directory' | 'file', + format: AstroConfig["build"]["format"], + trailingSlash: AstroConfig["trailingSlash"], routeType: RouteType ): URL { /** @@ -463,7 +465,7 @@ function getUrlForPath( * pathname: /, /foo * base: / */ - const ending = format === 'directory' ? '/' : '.html'; + const ending = format === 'directory' ? trailingSlash === 'never' ? '' : '/' : '.html'; let buildPathname: string; if (pathname === '/' || pathname === '') { buildPathname = base; @@ -538,6 +540,7 @@ async function generatePath( pipeline.getConfig().base, pipeline.getStaticBuildOptions().origin, pipeline.getConfig().build.format, + pipeline.getConfig().trailingSlash, route.type ); diff --git a/packages/astro/test/astro-get-static-paths.test.js b/packages/astro/test/astro-get-static-paths.test.js index 66aa5b94d042..3e35d6c856ea 100644 --- a/packages/astro/test/astro-get-static-paths.test.js +++ b/packages/astro/test/astro-get-static-paths.test.js @@ -10,6 +10,7 @@ describe('getStaticPaths - build calls', () => { fixture = await loadFixture({ root: './fixtures/astro-get-static-paths/', site: 'https://mysite.dev/', + trailingSlash: 'never', base: '/blog', }); await fixture.build(); @@ -29,7 +30,7 @@ describe('getStaticPaths - build calls', () => { const html = await fixture.readFile('/food/tacos/index.html'); const $ = cheerio.load(html); - expect($('#url').text()).to.equal('/blog/food/tacos/'); + expect($('#url').text()).to.equal('/blog/food/tacos'); }); });