mirror of
https://github.com/bmad-code-org/BMAD-METHOD.git
synced 2026-08-28 11:10:51 +08:00
922c86d2c5
* docs: create Build a Change page and retire Quick Fixes and Build Consolidate how-to/quick-fixes and explanation/build into the canonical build/build-a-change page, opening with the sizing model and Where Build Fits table and preserving the Build diagram and intent examples. Add the Build sidebar group after Start, redirect both old routes, retarget first-party English links and the llms.txt entry, and close the resulting sidebar-order gaps. * fix(docs): track Build a Change page by scoping Astro build ignore The bare build/ gitignore rule also matched docs/build/, so the new canonical page never entered the prior commit. * docs: rewrite Build a Change page in plain English Name the skill as bmad-build instead of Build, drop the duplicated routing tables, and explain why it spends human attention on a few checkpoints instead of a Continue slog.
244 lines
8.7 KiB
JavaScript
244 lines
8.7 KiB
JavaScript
// @ts-check
|
|
import { defineConfig } from 'astro/config';
|
|
import starlight from '@astrojs/starlight';
|
|
import sitemap from '@astrojs/sitemap';
|
|
import rehypeMarkdownLinks from './src/rehype-markdown-links.js';
|
|
import rehypeBasePaths from './src/rehype-base-paths.js';
|
|
import { getSiteUrl } from './src/lib/site-url.mjs';
|
|
import { locales } from './src/lib/locales.mjs';
|
|
|
|
const siteUrl = getSiteUrl();
|
|
const urlParts = new URL(siteUrl);
|
|
// Normalize basePath: ensure trailing slash so links can use `${BASE_URL}path`
|
|
const basePath = urlParts.pathname === '/' ? '/' : urlParts.pathname.endsWith('/') ? urlParts.pathname : urlParts.pathname + '/';
|
|
|
|
export default defineConfig({
|
|
site: `${urlParts.origin}${basePath}`,
|
|
base: basePath,
|
|
outDir: '../build/site',
|
|
redirects: {
|
|
'/how-to/install-bmad': `${basePath}start/install-bmad/`,
|
|
'/how-to/non-interactive-installation': `${basePath}start/install-bmad/`,
|
|
'/tutorials/getting-started': `${basePath}start/build-your-first-change/`,
|
|
'/how-to/quick-fixes': `${basePath}build/build-a-change/`,
|
|
'/explanation/build': `${basePath}build/build-a-change/`,
|
|
'/fr/how-to/non-interactive-installation': `${basePath}fr/how-to/install-bmad/`,
|
|
'/cs/how-to/non-interactive-installation': `${basePath}cs/how-to/install-bmad/`,
|
|
'/vi-vn/how-to/non-interactive-installation': `${basePath}vi-vn/how-to/install-bmad/`,
|
|
'/zh-cn/how-to/non-interactive-installation': `${basePath}zh-cn/how-to/install-bmad/`,
|
|
},
|
|
|
|
// Disable aggressive caching in dev mode
|
|
vite: {
|
|
optimizeDeps: {
|
|
force: true, // Always re-bundle dependencies
|
|
},
|
|
server: {
|
|
watch: {
|
|
usePolling: false, // Set to true if file changes aren't detected
|
|
},
|
|
},
|
|
},
|
|
|
|
markdown: {
|
|
rehypePlugins: [
|
|
[rehypeMarkdownLinks, { base: basePath }],
|
|
[rehypeBasePaths, { base: basePath }],
|
|
],
|
|
},
|
|
|
|
integrations: [
|
|
// Exclude custom 404 pages (all locales) from the sitemap — they are
|
|
// treated as normal content docs by Starlight even with disable404Route.
|
|
sitemap({
|
|
filter: (page) => !/\/404(\/|$)/.test(new URL(page).pathname),
|
|
}),
|
|
starlight({
|
|
title: 'BMAD Method',
|
|
tagline: 'AI-driven agile development with specialized agents and workflows that scale from bug fixes to enterprise platforms.',
|
|
|
|
// i18n: locale config from shared module (website/src/lib/locales.mjs)
|
|
defaultLocale: 'root',
|
|
locales,
|
|
|
|
favicon: '/favicon.ico',
|
|
|
|
// Social links
|
|
social: [
|
|
{ icon: 'discord', label: 'Discord', href: 'https://discord.gg/gk8jAdXWmj' },
|
|
{ icon: 'github', label: 'GitHub', href: 'https://github.com/bmad-code-org/BMAD-METHOD' },
|
|
{ icon: 'youtube', label: 'YouTube', href: 'https://www.youtube.com/@BMadCode' },
|
|
],
|
|
|
|
// Show last updated timestamps
|
|
lastUpdated: true,
|
|
|
|
// Custom head tags for LLM discovery
|
|
head: [
|
|
{
|
|
tag: 'meta',
|
|
attrs: {
|
|
name: 'ai-terms',
|
|
content: `AI-optimized documentation: ${siteUrl}/llms-full.txt (plain text, ~100k tokens, complete BMAD reference). Index: ${siteUrl}/llms.txt`,
|
|
},
|
|
},
|
|
{
|
|
tag: 'meta',
|
|
attrs: {
|
|
name: 'llms-full',
|
|
content: `${siteUrl}/llms-full.txt`,
|
|
},
|
|
},
|
|
{
|
|
tag: 'meta',
|
|
attrs: {
|
|
name: 'llms',
|
|
content: `${siteUrl}/llms.txt`,
|
|
},
|
|
},
|
|
],
|
|
|
|
// Custom CSS
|
|
customCss: ['./src/styles/custom.css'],
|
|
|
|
// Sidebar configuration
|
|
sidebar: [
|
|
{
|
|
label: 'Start',
|
|
translations: { 'vi-VN': 'Bắt đầu', 'zh-CN': '开始', 'fr-FR': 'Démarrer', 'cs-CZ': 'Začít' },
|
|
collapsed: false,
|
|
items: [
|
|
{
|
|
label: 'Welcome',
|
|
translations: { 'vi-VN': 'Chào mừng', 'zh-CN': '欢迎', 'fr-FR': 'Bienvenue', 'cs-CZ': 'Vítejte' },
|
|
slug: 'index',
|
|
},
|
|
{
|
|
label: 'Install BMad',
|
|
translations: {
|
|
'vi-VN': 'Cách cài đặt BMad',
|
|
'zh-CN': '如何安装 BMad',
|
|
'fr-FR': 'Comment installer BMad',
|
|
'cs-CZ': 'Jak nainstalovat BMad',
|
|
},
|
|
slug: 'start/install-bmad',
|
|
},
|
|
{
|
|
label: 'Build Your First Change',
|
|
translations: { 'vi-VN': 'Bắt đầu', 'zh-CN': '快速入门', 'fr-FR': 'Premiers pas', 'cs-CZ': 'Začínáme' },
|
|
slug: 'start/build-your-first-change',
|
|
},
|
|
],
|
|
},
|
|
{
|
|
label: 'Build',
|
|
translations: { 'vi-VN': 'Xây dựng', 'zh-CN': '构建', 'fr-FR': 'Construire', 'cs-CZ': 'Sestavit' },
|
|
collapsed: false,
|
|
items: [
|
|
{
|
|
label: 'Build a Change',
|
|
translations: {
|
|
'vi-VN': 'Xây dựng một thay đổi',
|
|
'zh-CN': '构建一个变更',
|
|
'fr-FR': 'Construire un changement',
|
|
'cs-CZ': 'Sestavit změnu',
|
|
},
|
|
slug: 'build/build-a-change',
|
|
},
|
|
],
|
|
},
|
|
{
|
|
label: 'Tutorials',
|
|
translations: { 'vi-VN': 'Hướng dẫn nhập môn', 'zh-CN': '教程', 'fr-FR': 'Tutoriels', 'cs-CZ': 'Tutoriály' },
|
|
collapsed: false,
|
|
items: [{ autogenerate: { directory: 'tutorials' } }],
|
|
},
|
|
{
|
|
label: 'How-To Guides',
|
|
translations: { 'vi-VN': 'Hướng dẫn tác vụ', 'zh-CN': '操作指南', 'fr-FR': 'Guides pratiques', 'cs-CZ': 'Praktické návody' },
|
|
collapsed: true,
|
|
items: [{ autogenerate: { directory: 'how-to' } }],
|
|
},
|
|
{
|
|
label: 'Explanation',
|
|
translations: { 'vi-VN': 'Giải thích', 'zh-CN': '概念说明', 'fr-FR': 'Explications', 'cs-CZ': 'Vysvětlení' },
|
|
collapsed: true,
|
|
items: [{ autogenerate: { directory: 'explanation' } }],
|
|
},
|
|
{
|
|
label: 'Reference',
|
|
translations: { 'vi-VN': 'Tham chiếu', 'zh-CN': '参考', 'fr-FR': 'Référence', 'cs-CZ': 'Reference' },
|
|
collapsed: true,
|
|
items: [{ autogenerate: { directory: 'reference' } }],
|
|
},
|
|
// TEA docs moved to standalone module site; keep BMM sidebar focused.
|
|
{
|
|
label: 'BMad Ecosystem',
|
|
translations: { 'vi-VN': 'Hệ sinh thái BMad', 'zh-CN': 'BMad 生态系统', 'fr-FR': 'Écosystème BMad', 'cs-CZ': 'Ekosystém BMad' },
|
|
collapsed: false,
|
|
items: [
|
|
{
|
|
label: 'BMad Builder',
|
|
translations: { 'vi-VN': 'BMad Builder', 'zh-CN': 'BMad 构建器', 'fr-FR': 'BMad Builder', 'cs-CZ': 'BMad Builder' },
|
|
link: 'https://bmad-builder-docs.bmad-method.org/',
|
|
attrs: { target: '_blank' },
|
|
},
|
|
{
|
|
label: 'Creative Intelligence Suite',
|
|
translations: {
|
|
'vi-VN': 'Bộ công cụ Trí tuệ Sáng tạo',
|
|
'zh-CN': '创意智能套件',
|
|
'fr-FR': "Suite d'Intelligence Créative",
|
|
'cs-CZ': 'Sada kreativní inteligence',
|
|
},
|
|
link: 'https://cis-docs.bmad-method.org/',
|
|
attrs: { target: '_blank' },
|
|
},
|
|
{
|
|
label: 'Game Dev Studio',
|
|
translations: {
|
|
'vi-VN': 'Xưởng phát triển Game',
|
|
'zh-CN': '游戏开发工作室',
|
|
'fr-FR': 'Studio de Développement de Jeux',
|
|
'cs-CZ': 'Herní vývojové studio',
|
|
},
|
|
link: 'https://game-dev-studio-docs.bmad-method.org/',
|
|
attrs: { target: '_blank' },
|
|
},
|
|
{
|
|
label: 'Test Architect (TEA)',
|
|
translations: {
|
|
'vi-VN': 'Kiến trúc sư Kiểm thử (TEA)',
|
|
'zh-CN': '测试架构师 (TEA)',
|
|
'fr-FR': 'Architecte de Tests (TEA)',
|
|
'cs-CZ': 'Testovací architekt (TEA)',
|
|
},
|
|
link: 'https://bmad-code-org.github.io/bmad-method-test-architecture-enterprise/',
|
|
attrs: { target: '_blank' },
|
|
},
|
|
],
|
|
},
|
|
],
|
|
|
|
// Credits in footer
|
|
credits: false,
|
|
|
|
// Pagination
|
|
pagination: false,
|
|
|
|
// Use our docs/404.md instead of Starlight's built-in 404
|
|
disable404Route: true,
|
|
|
|
// Custom components
|
|
components: {
|
|
Header: './src/components/Header.astro',
|
|
MobileMenuFooter: './src/components/MobileMenuFooter.astro',
|
|
Sidebar: './src/components/Sidebar.astro',
|
|
},
|
|
|
|
// Table of contents
|
|
tableOfContents: { minHeadingLevel: 2, maxHeadingLevel: 3 },
|
|
}),
|
|
],
|
|
});
|