diff --git a/astro.config.ts b/astro.config.ts index ad4a04eecf5e1..d97f6cc95cbe5 100644 --- a/astro.config.ts +++ b/astro.config.ts @@ -16,6 +16,10 @@ import { remarkFallbackLang } from './config/plugins/remark-fallback-lang'; const NETLIFY_PREVIEW_SITE = process.env.CONTEXT !== 'production' && process.env.DEPLOY_PRIME_URL; const site = NETLIFY_PREVIEW_SITE || 'https://docs.astro.build/'; +const starlightPlugins = [ + starlightPluginSmokeTest(), + ...(process.env.SKIP_LLMS ? [] : [starlightPluginLlmsTxt()]), +]; // https://astro.build/config export default defineConfig({ @@ -69,7 +73,7 @@ export default defineConfig({ }, ], disable404Route: true, - plugins: [starlightPluginSmokeTest(), starlightPluginLlmsTxt()], + plugins: starlightPlugins, }), sitemap(), ], diff --git a/package.json b/package.json index 52668720071c6..395829485638e 100644 --- a/package.json +++ b/package.json @@ -7,6 +7,7 @@ "dev": "astro dev", "start": "astro dev", "build": "astro build", + "build:linkcheck": "SKIP_OG=true SKIP_LLMS=true pnpm build && node ./scripts/write-linkcheck-llms-stubs.mjs", "preview": "astro preview", "check": "astro check", "format": "pnpm run format:code", @@ -15,7 +16,7 @@ "format:imports": "echo 'Skipped formatting imports'", "docgen": "node ./scripts/docgen.mjs", "docgen:errors": "node ./scripts/error-docgen.mjs", - "lint:linkcheck": "SKIP_OG=true pnpm build && node --experimental-transform-types ./scripts/lint-linkcheck.ts", + "lint:linkcheck": "pnpm build:linkcheck && node --experimental-transform-types ./scripts/lint-linkcheck.ts", "lint:linkcheck:nobuild": "node --experimental-transform-types ./scripts/lint-linkcheck.ts", "lint:slugcheck": "node ./scripts/lint-slugcheck.mjs", "lint:eslint": "eslint .", diff --git a/scripts/write-linkcheck-llms-stubs.mjs b/scripts/write-linkcheck-llms-stubs.mjs new file mode 100644 index 0000000000000..854e02e01cbc0 --- /dev/null +++ b/scripts/write-linkcheck-llms-stubs.mjs @@ -0,0 +1,14 @@ +import { mkdir, writeFile } from 'node:fs/promises'; + +const distDir = new URL('../dist/', import.meta.url); +const llmsFiles = [ + ['llms.txt', '# Linkcheck-only stub\n'], + ['llms-full.txt', '# Linkcheck-only stub\n'], + ['llms-small.txt', '# Linkcheck-only stub\n'], +]; + +await mkdir(distDir, { recursive: true }); + +await Promise.all( + llmsFiles.map(([name, contents]) => writeFile(new URL(name, distDir), contents, 'utf8')) +);