文件组织
Nextra 首先从 pages 目录中收集所有 Markdown 文件和配置,然后生成整个站点的“页面映射信息”,以渲染诸如导航栏和侧边栏之类的内容。

例如:Nextra 文档主题 自动从 Markdown 文件生成侧边栏和导航栏。
默认行为
默认情况下,页面映射包含所有 .md 和 .mdx 文件名以及目录结构,并按字母顺序排序。然后,Nextra 将使用 title 包从文件名获取格式化的页面名称。
例如,如果您有以下结构
- contact.md
- index.mdx
- legal.md
- index.mdx
解析后的页面映射将为(注意所有名称都已按字母顺序排序)
[
{
"name": "About",
"children": [{ "name": "Index" }, { "name": "Legal" }]
},
{ "name": "Contact" },
{ "name": "Index" }
]全局页面映射将由 Nextra 导入到每个页面。然后,配置的主题将使用该页面映射渲染实际的 UI。
_meta.js
自定义每个页面的标题,而不是仅仅依赖文件名,这很常见。标题为“Index”的页面缺乏清晰度。最好分配一个有意义的标题,准确地反映内容,例如“首页”。
这就是 _meta.js 文件的作用。您可以在每个目录中都放置一个 _meta.js 文件,它将用于覆盖每个页面的默认配置。
- _meta.js
- contact.md
- index.mdx
- _meta.js
- legal.md
- index.mdx
允许的扩展名
也可以对 _meta 文件使用 .jsx、.ts 和 .tsx 扩展名(例如 _meta.ts)。
按字母顺序排序页面
您可以使用 ESLint 的内置 sort-keys 规则,在 _meta 文件顶部添加 /* eslint sort-keys: error */ 注释,您将收到关于错误顺序的 ESLint 错误。
与 next-sitemap 结合使用
如果您使用的是 next-sitemap,您可能需要在 next-sitemap.config.js 文件中添加 exclude: ['*/_meta'],因为它 很难从构建中排除 _meta 文件。
允许的键值
_meta 键的类型应始终为 string,而不是 number,因为对于 JavaScript 对象,数字始终首先排序。
以下
export default {
foo: '',
1992_10_21: '',
1: ''
}将转换为
export default {
'1': '',
'19921021': '',
foo: ''
}示例
将此内容放入您的 pages/_meta.js 文件中
export default {
index: 'My Homepage',
contact: 'Contact Us',
about: 'About Us'
}它告诉 Nextra 每个页面的顺序以及正确的标题。
或者,您可以使用 title 属性并在其中进行其他配置。
export default {
index: 'My Homepage',
contact: 'Contact Us',
about: {
title: 'About Us'
// ... extra configurations
}
}额外的配置作为附加信息传递给主题。查看相应的页面以获取更多信息。