From 757c65ffc468fd2c782312b476fa7659d0cfd198 Mon Sep 17 00:00:00 2001 From: Chris Swithinbank Date: Fri, 14 Jul 2023 14:27:56 +0200 Subject: Fix relative path resolution on Windows (#335) * Use Vite hack to resolve user config paths * Add changeset * Switch to `JSON.stringify` strategy * Remove old changeset--- .changeset/fluffy-lions-yell.md | 5 +++++ .changeset/friendly-lobsters-share.md | 5 ----- packages/starlight/index.ts | 10 +++++----- 3 files changed, 10 insertions(+), 10 deletions(-) create mode 100644 .changeset/fluffy-lions-yell.md delete mode 100644 .changeset/friendly-lobsters-share.md diff --git a/.changeset/fluffy-lions-yell.md b/.changeset/fluffy-lions-yell.md new file mode 100644 index 00000000..6b02e4f8 --- /dev/null +++ b/.changeset/fluffy-lions-yell.md @@ -0,0 +1,5 @@ +--- +"@astrojs/starlight": patch +--- + +Fix relative path resolution on Windows diff --git a/.changeset/friendly-lobsters-share.md b/.changeset/friendly-lobsters-share.md deleted file mode 100644 index 6b02e4f8..00000000 --- a/.changeset/friendly-lobsters-share.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"@astrojs/starlight": patch ---- - -Fix relative path resolution on Windows diff --git a/packages/starlight/index.ts b/packages/starlight/index.ts index a1e68e20..8a46b29f 100644 --- a/packages/starlight/index.ts +++ b/packages/starlight/index.ts @@ -6,7 +6,7 @@ import type { ViteUserConfig, } from 'astro'; import { spawn } from 'node:child_process'; -import { dirname, relative } from 'node:path'; +import { dirname, relative, resolve } from 'node:path'; import { fileURLToPath } from 'node:url'; import { starlightAsides } from './integrations/asides'; import { starlightSitemap } from './integrations/sitemap'; @@ -89,19 +89,19 @@ function vitePluginStarlightUserConfig( { root }: AstroConfig ): NonNullable[number] { const resolveRelativeId = (id: string) => - id.startsWith('.') ? fileURLToPath(new URL(id, root)) : id; + id.startsWith('.') ? JSON.stringify(resolve(fileURLToPath(root), id)) : id; const modules = { 'virtual:starlight/user-config': `export default ${JSON.stringify(opts)}`, 'virtual:starlight/project-context': `export default ${JSON.stringify({ root, })}`, 'virtual:starlight/user-css': opts.customCss - .map((id) => `import "${resolveRelativeId(id)}";`) + .map((id) => `import ${resolveRelativeId(id)};`) .join(''), 'virtual:starlight/user-images': opts.logo ? 'src' in opts.logo - ? `import src from "${resolveRelativeId(opts.logo.src)}"; export const logos = { dark: src, light: src };` - : `import dark from "${resolveRelativeId(opts.logo.dark)}"; import light from "${resolveRelativeId(opts.logo.light)}"; export const logos = { dark, light };` + ? `import src from ${resolveRelativeId(opts.logo.src)}; export const logos = { dark: src, light: src };` + : `import dark from ${resolveRelativeId(opts.logo.dark)}; import light from ${resolveRelativeId(opts.logo.light)}; export const logos = { dark, light };` : 'export const logos = {};', }; const resolutionMap = Object.fromEntries( -- cgit