From 19e1686b8701ea7c4f8449958911035ae29cb53a Mon Sep 17 00:00:00 2001 From: Tony Sullivan Date: Thu, 5 May 2022 22:39:16 +0000 Subject: [PATCH] Allowing Vite to handle base config for deploying to subpaths (#3178) * Revert "Improvements to build and dev when building for subpaths (#3156)" This reverts commit 637919c8b63df1608e88d153742db098722265d8. * letting Vite handle base paths * test updates to expect Astro.request.url to no longer include subpaths * bringing back the fix for including subpaths in injects scripts and styles * fixing the static-build test to handle subpaths for injected CSS * fixing asset import URLs when using base subpaths * chore: fixing typo in the comments * Astro needs to manage base in dev to maintain Astro.request.url * fix: reverting dev routing tests to expect existing behavior * reverting Astro global test to verify existing behavior * chore: adding changeset * test: update static-build tests to verify the subpath is used in asset imports --- .changeset/pretty-pumpkins-work.md | 5 +++++ packages/astro/src/core/build/static-build.ts | 2 +- packages/astro/src/core/config.ts | 4 ++-- packages/astro/test/static-build.test.js | 3 +++ 4 files changed, 11 insertions(+), 3 deletions(-) create mode 100644 .changeset/pretty-pumpkins-work.md diff --git a/.changeset/pretty-pumpkins-work.md b/.changeset/pretty-pumpkins-work.md new file mode 100644 index 0000000000..40d19f5cd6 --- /dev/null +++ b/.changeset/pretty-pumpkins-work.md @@ -0,0 +1,5 @@ +--- +'astro': patch +--- + +Fixes an issue that was breaking asset and stylesheet URLs when building for a subpath diff --git a/packages/astro/src/core/build/static-build.ts b/packages/astro/src/core/build/static-build.ts index 2884174f46..6150dd9954 100644 --- a/packages/astro/src/core/build/static-build.ts +++ b/packages/astro/src/core/build/static-build.ts @@ -162,7 +162,7 @@ async function ssrBuild(opts: StaticBuildOptions, internals: BuildInternals, inp root: viteConfig.root, envPrefix: 'PUBLIC_', server: viteConfig.server, - base: astroConfig.site ? new URL(astroConfig.site).pathname : '/', + base: astroConfig.base, ssr: viteConfig.ssr, resolve: viteConfig.resolve, } as ViteConfigWithSSR; diff --git a/packages/astro/src/core/config.ts b/packages/astro/src/core/config.ts index 74942e56ff..8b16ce5a0a 100644 --- a/packages/astro/src/core/config.ts +++ b/packages/astro/src/core/config.ts @@ -14,7 +14,7 @@ import load, { resolve, ProloadError } from '@proload/core'; import loadTypeScript from '@proload/plugin-tsm'; import postcssrc from 'postcss-load-config'; import { arraify, isObject } from './util.js'; -import { appendForwardSlash, trimSlashes } from './path.js'; +import { appendForwardSlash, prependForwardSlash, trimSlashes } from './path.js'; load.use([loadTypeScript]); @@ -95,7 +95,7 @@ export const AstroConfigSchema = z.object({ .string() .optional() .default('/') - .transform((val) => appendForwardSlash(trimSlashes(val))), + .transform((val) => prependForwardSlash(appendForwardSlash(trimSlashes(val)))), trailingSlash: z .union([z.literal('always'), z.literal('never'), z.literal('ignore')]) .optional() diff --git a/packages/astro/test/static-build.test.js b/packages/astro/test/static-build.test.js index a461209a20..ce470b2b6c 100644 --- a/packages/astro/test/static-build.test.js +++ b/packages/astro/test/static-build.test.js @@ -96,6 +96,9 @@ describe('Static build', () => { for (const link of links) { const href = $(link).attr('href'); + // The imported .scss file should include the base subpath in the href + expect(href.startsWith('/subpath/')).to.be.true; + /** * The link should be built with the config's `base` included * as a subpath.