Astro 文档
此生成器搭建了一个由 Astro 和 Starlight 文档主题驱动的文档站点。它默认配置了本地化、可重用内容片段、区域感知内部链接以及 starlight-blog 插件。
默认情况下,它还会搭建一个由 Amazon Bedrock 上的 Strands Agent 驱动的自动翻译管道。
生成 Astro 文档站点
Section titled “生成 Astro 文档站点”您可以通过两种方式生成新的 Astro 文档站点:
- 安装 Nx Console VSCode Plugin 如果您尚未安装
- 在VSCode中打开Nx控制台
- 点击
Generate (UI)在"Common Nx Commands"部分 - 搜索
@aws/nx-plugin - ts#astro-docs - 填写必需参数
- 点击
Generate
pnpm nx g @aws/nx-plugin:ts#astro-docsyarn nx g @aws/nx-plugin:ts#astro-docsnpx nx g @aws/nx-plugin:ts#astro-docsbunx nx g @aws/nx-plugin:ts#astro-docs| 参数 | 类型 | 默认值 | 描述 |
|---|---|---|---|
| name 必需 | string | docs | 文档项目的名称。 |
| directory | string | . | 文档项目所放置的父目录。 |
| subDirectory | string | - | 文档项目所放置的子目录。默认为 kebab-case 格式的项目名称。 |
| noTranslation | boolean | 选择退出自动化文档翻译管道(Amazon Bedrock 上的 Strands Agent + `translate` 项目目标)。 | |
| noBlog | boolean | 选择退出 `starlight-blog` 插件和示例博客文章。 | |
| skipInstall | boolean | 生成器运行后跳过安装依赖项。 |
默认情况下,生成器会在工作区根目录的 docs/ 下创建以下项目结构(可通过 name、directory 和 subDirectory 选项配置):
- astro.config.mjs Astro + Starlight 配置(区域设置、侧边栏、博客插件)
- tsconfig.json 扩展 astro/tsconfigs/strict,包含 @components / @assets 路径别名
- project.json Nx 项目,包含
build、start、preview(以及启用时的translate)目标 文件夹scripts
- translate.ts 翻译驱动程序 — 带有作用域文件编辑器工具的 Strands 代理(使用
--noTranslation时省略) - translate.config.json 源/目标区域设置、glob 模式、模型 ID、区域(使用
--noTranslation时省略)
- translate.ts 翻译驱动程序 — 带有作用域文件编辑器工具的 Strands 代理(使用
文件夹src
文件夹components
- link.astro 区域感知链接组件(根据当前区域设置解析路径)
- snippet.astro 区域感知片段加载器组件
文件夹content
文件夹docs
文件夹en
- index.mdx 着陆页
文件夹guides
- getting-started.mdx 引用链接和片段组件的示例指南
文件夹blog
- welcome.mdx 示例博客文章(使用
--noBlog时省略)
- welcome.mdx 示例博客文章(使用
文件夹snippets
- example.mdx 示例可重用片段
文件夹styles
- custom.css Starlight 主题覆盖
- README.md 项目 README
生成器默认使用单一区域设置(en)并将根 URL 重定向到该区域设置。要添加更多语言:
- 在
astro.config.mjs的locales下添加一个条目(例如ko: { label: '한국어' })。 - 在
src/content/docs/<locale>/下创建匹配的目录。 - 手动填充内容,或使用下面描述的翻译目标。
除非您传递了 --noTranslation,否则生成器会向 project.json 添加一个 translate 目标,因此您可以运行:
pnpm nx translate docs -- --allpnpm nx translate docs -- --languages jp,kopnpm nx translate docs -- --dry-runyarn nx translate docs -- --allyarn nx translate docs -- --languages jp,koyarn nx translate docs -- --dry-runnpx nx translate docs -- --allnpx nx translate docs -- --languages jp,konpx nx translate docs -- --dry-runbunx nx translate docs -- --allbunx nx translate docs -- --languages jp,kobunx nx translate docs -- --dry-run在不使用 --all 的情况下运行时,脚本仅翻译自当前分支上次翻译提交以来已更改的文件 — 这意味着您可以在每个文档 PR 上安全地重新运行它,而无需重新翻译整个站点。
编辑 scripts/translate.config.json 以更改:
| 字段 | 用途 |
|---|---|
sourceLanguage | 翻译源区域设置(默认为 en)。 |
targetLanguages | 翻译目标区域设置。默认为空。例如 ["fr", "de", "es", "ja", "ko"]。 |
docsDir | 文档内容目录的路径,相对于项目根目录。 |
include | 要翻译的文件的 Glob 模式(相对于 <docsDir>/<sourceLanguage>)。 |
exclude | 要跳过的 Glob 模式。 |
modelId | 用于翻译的 Bedrock 模型。 |
awsRegion | Bedrock 客户端配置的 AWS 区域。也可以通过 AWS_REGION 设置。 |
concurrency | 最大并发代理调用数。 |
translationCommitMessage | 翻译提交的提交消息标记(默认为 docs: update translations)。 |
区域感知内部链接
Section titled “区域感知内部链接”生成器附带一个 Link 组件,该组件会自动根据当前区域设置解析内部文档路径,因此单一事实来源可以在每种语言中生成正确的 URL:
import Link from '@components/link.astro';
<Link path="guides/getting-started">阅读入门指南</Link>可重用的内容片段位于 src/content/docs/<locale>/snippets/ 中。生成的 Snippet 组件会加载与当前区域设置匹配的片段:
import Snippet from '@components/snippet.astro';
<Snippet name="example" />开箱即用不会生成 CI 工作流 — 添加一个工作流来:
-
配置 AWS 凭证,具有在配置的模型上调用 Bedrock
InvokeModel的权限。 -
在触及源语言文档的拉取请求上运行
translate目标:Terminal window pnpm nx translate docsTerminal window yarn nx translate docsTerminal window npx nx translate docsTerminal window bunx nx translate docs -
将生成的翻译提交回 PR 分支。提交消息必须与
scripts/translate.config.json中的translationCommitMessage值匹配(默认为docs: update translations),以便后续增量运行可以检测基线提交并仅重新翻译自那时以来更改的文件。