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

自訂每個頁面的標題是很常見的做法,而不是僅僅依賴檔案名稱。標題為「索引」的頁面缺乏清晰度。最好指定一個有意義的標題,準確地表示內容,例如「首頁」。

這就是 _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
  }
}

額外的設定會以額外資訊的形式傳遞給**主題**。請查看相對應的頁面以取得更多資訊