From dbfd3eeccacb5f5b77d75213dac3b30dc0be6deb Mon Sep 17 00:00:00 2001 From: HiDeoo <494699+HiDeoo@users.noreply.github.com> Date: Fri, 28 Jun 2024 17:19:08 +0200 Subject: [PATCH] Fix usage of `` with a custom `srcDir` configuration (#2054) --- .changeset/tidy-brooms-complain.md | 5 +++++ packages/starlight/__e2e__/collection-config.test.ts | 12 ++++++++++++ .../__e2e__/fixtures/custom-src-dir/astro.config.mjs | 11 +++++++++++ .../__e2e__/fixtures/custom-src-dir/package.json | 9 +++++++++ .../fixtures/custom-src-dir/www/content/config.ts | 6 ++++++ .../__e2e__/fixtures/custom-src-dir/www/env.d.ts | 2 ++ .../fixtures/custom-src-dir/www/pages/custom.astro | 7 +++++++ .../starlight/integrations/virtual-user-config.ts | 2 +- packages/starlight/playwright.config.ts | 1 + pnpm-lock.yaml | 9 +++++++++ 10 files changed, 63 insertions(+), 1 deletion(-) create mode 100644 .changeset/tidy-brooms-complain.md create mode 100644 packages/starlight/__e2e__/collection-config.test.ts create mode 100644 packages/starlight/__e2e__/fixtures/custom-src-dir/astro.config.mjs create mode 100644 packages/starlight/__e2e__/fixtures/custom-src-dir/package.json create mode 100644 packages/starlight/__e2e__/fixtures/custom-src-dir/www/content/config.ts create mode 100644 packages/starlight/__e2e__/fixtures/custom-src-dir/www/env.d.ts create mode 100644 packages/starlight/__e2e__/fixtures/custom-src-dir/www/pages/custom.astro diff --git a/.changeset/tidy-brooms-complain.md b/.changeset/tidy-brooms-complain.md new file mode 100644 index 00000000000..b501ba491b8 --- /dev/null +++ b/.changeset/tidy-brooms-complain.md @@ -0,0 +1,5 @@ +--- +'@astrojs/starlight': patch +--- + +Fixes an issue when using the `` component in a custom page with a user-defined `srcDir` configuration. diff --git a/packages/starlight/__e2e__/collection-config.test.ts b/packages/starlight/__e2e__/collection-config.test.ts new file mode 100644 index 00000000000..5b26f9dc07a --- /dev/null +++ b/packages/starlight/__e2e__/collection-config.test.ts @@ -0,0 +1,12 @@ +import { expect, testFactory } from './test-utils'; + +const test = await testFactory('./fixtures/custom-src-dir/'); + +test('builds a custom page using the `` component and a custom `srcDir`', async ({ + page, + starlight, +}) => { + await starlight.goto('/custom'); + + await expect(page.getByText('Hello')).toBeVisible(); +}); diff --git a/packages/starlight/__e2e__/fixtures/custom-src-dir/astro.config.mjs b/packages/starlight/__e2e__/fixtures/custom-src-dir/astro.config.mjs new file mode 100644 index 00000000000..de22ac3953b --- /dev/null +++ b/packages/starlight/__e2e__/fixtures/custom-src-dir/astro.config.mjs @@ -0,0 +1,11 @@ +import starlight from '@astrojs/starlight'; +import { defineConfig } from 'astro/config'; + +export default defineConfig({ + srcDir: './www', + integrations: [ + starlight({ + title: 'Custom src directory', + }), + ], +}); diff --git a/packages/starlight/__e2e__/fixtures/custom-src-dir/package.json b/packages/starlight/__e2e__/fixtures/custom-src-dir/package.json new file mode 100644 index 00000000000..b6d71aca99c --- /dev/null +++ b/packages/starlight/__e2e__/fixtures/custom-src-dir/package.json @@ -0,0 +1,9 @@ +{ + "name": "@e2e/custom-src-dir", + "version": "0.0.0", + "private": true, + "dependencies": { + "@astrojs/starlight": "workspace:*", + "astro": "^4.10.2" + } +} diff --git a/packages/starlight/__e2e__/fixtures/custom-src-dir/www/content/config.ts b/packages/starlight/__e2e__/fixtures/custom-src-dir/www/content/config.ts new file mode 100644 index 00000000000..45f60b01542 --- /dev/null +++ b/packages/starlight/__e2e__/fixtures/custom-src-dir/www/content/config.ts @@ -0,0 +1,6 @@ +import { defineCollection } from 'astro:content'; +import { docsSchema } from '@astrojs/starlight/schema'; + +export const collections = { + docs: defineCollection({ schema: docsSchema() }), +}; diff --git a/packages/starlight/__e2e__/fixtures/custom-src-dir/www/env.d.ts b/packages/starlight/__e2e__/fixtures/custom-src-dir/www/env.d.ts new file mode 100644 index 00000000000..acef35f175a --- /dev/null +++ b/packages/starlight/__e2e__/fixtures/custom-src-dir/www/env.d.ts @@ -0,0 +1,2 @@ +/// +/// diff --git a/packages/starlight/__e2e__/fixtures/custom-src-dir/www/pages/custom.astro b/packages/starlight/__e2e__/fixtures/custom-src-dir/www/pages/custom.astro new file mode 100644 index 00000000000..680eaaef6a7 --- /dev/null +++ b/packages/starlight/__e2e__/fixtures/custom-src-dir/www/pages/custom.astro @@ -0,0 +1,7 @@ +--- +import StarlightPage from '@astrojs/starlight/components/StarlightPage.astro'; +--- + + +

Hello

+
diff --git a/packages/starlight/integrations/virtual-user-config.ts b/packages/starlight/integrations/virtual-user-config.ts index b51f8e3877d..d955ad50c43 100644 --- a/packages/starlight/integrations/virtual-user-config.ts +++ b/packages/starlight/integrations/virtual-user-config.ts @@ -50,7 +50,7 @@ export function vitePluginStarlightUserConfig( : 'export const logos = {};', 'virtual:starlight/collection-config': `let userCollections; try { - userCollections = (await import('/src/content/config.ts')).collections; + userCollections = (await import('${new URL('./content/config.ts', srcDir).pathname}')).collections; } catch {} export const collections = userCollections;`, ...virtualComponentModules, diff --git a/packages/starlight/playwright.config.ts b/packages/starlight/playwright.config.ts index 01098ea8b0d..e16c146c9b8 100644 --- a/packages/starlight/playwright.config.ts +++ b/packages/starlight/playwright.config.ts @@ -12,4 +12,5 @@ export default defineConfig({ }, ], testMatch: '__e2e__/*.test.ts', + workers: 1, }); diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 516d3ae4f9d..eecee635a33 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -219,6 +219,15 @@ importers: specifier: ^4.10.2 version: 4.10.2(@types/node@18.16.19)(typescript@5.4.5) + packages/starlight/__e2e__/fixtures/custom-src-dir: + dependencies: + '@astrojs/starlight': + specifier: workspace:* + version: link:../../.. + astro: + specifier: ^4.10.2 + version: 4.10.2(@types/node@18.16.19)(typescript@5.4.5) + packages/tailwind: dependencies: '@astrojs/starlight':