Nextra 3.0 已发布。 阅读更多
文档指南文件组织

文件组织

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


Example of Nextra Theme Docs

例如: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 对象,数字始终首先排序

以下

pages/_meta.js
export default {
  foo: '',
  1992_10_21: '',
  1: ''
}

将转换为

pages/_meta.js
export default {
  '1': '',
  '19921021': '',
  foo: ''
}

示例

将此内容放入您的 pages/_meta.js 文件中

pages/_meta.js
export default {
  index: 'My Homepage',
  contact: 'Contact Us',
  about: 'About Us'
}

它告诉 Nextra 每个页面的顺序以及正确的标题。

或者,您可以使用 title 属性并在其中进行其他配置。

pages/_meta.js
export default {
  index: 'My Homepage',
  contact: 'Contact Us',
  about: {
    title: 'About Us'
    // ... extra configurations
  }
}

额外的配置作为附加信息传递给主题。查看相应的页面以获取更多信息。