docusaurus簡單使用


前言

docusaurus是一款使用markdown編寫手冊文檔的工具,同類競品有vuepress
目前來看,比后者多了10k個start

docusaurus是基於react,而vuepress是基於vue的

官方文檔點擊此處

使用

創建項目

腳手架創建項目,比如我想創建一個名為linux-book的項目

npx create-docusaurus@latest linux-book classic

設置默認語言

然后集成i18n,不然上一頁下一頁 以及基本的語言默認都是英語。
docusaurus幫我們翻譯了一些基礎的單詞,我們去下載語言即可。
下載完成后復制到項目根目錄中 linux-book/i18n/zh-Hans

修改配置文件

docusaurus.config.js
配置i18n、配置頂部導航、底部、控制生成菜單名字和順序等等基本信息

// @ts-check

const lightCodeTheme = require("prism-react-renderer/themes/github");
const darkCodeTheme = require("prism-react-renderer/themes/dracula");

/** @type {import('@docusaurus/types').Config} */
const config = {
  title: "linux手冊",
  tagline: "學它,你就可以干掉運維",
  url: "https://your-docusaurus-test-site.com",
  baseUrl: "/",
  onBrokenLinks: "throw",
  onBrokenMarkdownLinks: "warn",
  favicon: "img/favicon.ico",
  organizationName: "facebook", // Usually your GitHub org/user name.
  projectName: "linux-book", // Usually your repo name.

  i18n: {
    // 國際化配置
    defaultLocale: "zh",
    locales: ["zh"],
  },

  presets: [
    // 預設
    [
      "classic",
      /** @type {import('@docusaurus/preset-classic').Options} */
      ({
        docs: {
          sidebarPath: require.resolve("./sidebars.js"),
        },
        theme: {
          customCss: require.resolve("./src/css/custom.css"),
        },
      }),
    ],
  ],

  themeConfig: // 頂部導航和底部導航基礎配置
    /** @type {import('@docusaurus/preset-classic').ThemeConfig} */
    ({
      navbar: {
        title: "linux手冊",
        logo: {
          alt: "My Site Logo",
          src: "img/logo.png",
        },
        items: [
          {
            type: "doc",
            docId: "第1章_什么是linux",
            position: "left",
            label: "文檔",
          },
          {
            href: "https://www.cnblogs.com/dingshaohua",
            label: "博客",
            position: "right",
          },
        ],
      },
      prism: {
        theme: lightCodeTheme,
        darkTheme: darkCodeTheme,
        defaultLanguage: "javascript",
      },
    }),
};

module.exports = config;

然后完事。

隱藏md內的標題

其實這個一級標題沒啥用,因為左側菜單不久知道當前講的是啥了嗎
而且如果你不手動設置標題,默認標題去除的是對應md的id,可能不太好看。
所以參考官方文檔隱藏標題掉即可,暫時還沒找到全局配置隱藏。

---
hide_title: true

預覽效果

關於部署

我這邊是部署到gitPage上的,所以需要將docusaurus.config.js中的baseUrl改為如下即可

baseUrl: "/linux-book/build/"

關於側邊欄---折疊

1、側邊欄從2.0開始 支持折疊菜單了。直接建菜單就可以體驗效果。
2、默認情況下,折疊菜單中,文件夾就是一級標題,點擊標題展開的二級標題,實際上就是目錄里的md文件。
3、如果點擊折疊菜單的一級標題,不想展開,而是擁有自己的頁面,則需要在此目錄內新建立一個文件_category_.json,代碼如下即可

{
  "label": "第2章_規范",
  "link": {
    "type": "generated-index",
    "description": "這一章講的就是規范"
  }
}

還要記得把docusaurus.config.js設置onBrokenLinks: "ignore",否則編譯不通過
4、顯然,第3條,僅靠description可能滿足不了需求,能不能指定一個markdown文件呢,當然可以
_category_.json修改如下

{
  "label": "第2章_規范",
  "link": {
    "type": "doc",
    "id": "第2章_規范/index"
  }
}

然后在此目錄下創建一個index.md

---
slug: 第2章_規范
---

## 說明
![tu](/img/1-1.png)
為了保證開發風格和質量,實現較好的可讀性和可維護性。

關於側邊欄---標題

左邊側邊欄的欄目和頁面內的一級標題,都取的是md文件內定義的title
xxx.md

---
title: 第3章 腳手架
---

如果沒有title屬性 則默認取之當前文件的id(如果不在文件內聲明id,則默認取文件名作為id)

關於側邊欄---排序

除了自定義攔截生成規則,你還可以使用元素據的方式來干涉排序

多個庫(實例)

修改配置文件里的兩個字段即可
presets.docs里放第一個庫實例,新增plugins字段放第二個庫實例,具體如下

// @ts-check
const lightCodeTheme = require('prism-react-renderer/themes/github');
const darkCodeTheme = require('prism-react-renderer/themes/dracula');

/** @type {import('@docusaurus/types').Config} */
const config = {
  title: '丁少華的個人網站',
  tagline: '這個網站很酷啊,趕緊收藏吧!',
  url: 'https://your-docusaurus-test-site.com',
  baseUrl: '/',
  onBrokenLinks: 'throw',
  onBrokenMarkdownLinks: 'warn',
  favicon: 'img/favicon.ico',
  organizationName: 'facebook', // Usually your GitHub org/user name.
  projectName: 'docusaurus', // Usually your repo name.
  i18n: {
    defaultLocale: 'zh',
    locales: ['zh'],
  },
  presets: [
    [
      'classic',
      /** @type {import('@docusaurus/preset-classic').Options} */
      ({
        docs: {
          sidebarPath: require.resolve('./sidebars.js'),
          path: 'docs/redux',
          routeBasePath: 'redux',
        },
        theme: {
          customCss: require.resolve('./src/css/custom.css'),
        },
      }),
    ],
  ],

  plugins: [
    [
      '@docusaurus/plugin-content-docs',
      {
        id: 'life',
        path: 'docs/life',
        routeBasePath: 'life',
        sidebarPath: require.resolve('./sidebars.js')
      },
    ],
  ],

  themeConfig:
    /** @type {import('@docusaurus/preset-classic').ThemeConfig} */
    ({
      navbar: {
        title: '丁少華的個人網站',
        logo: {
          alt: 'My Site Logo',
          src: 'img/logo.svg',
        },
        items: [
          {
            type: 'doc',
            docId: '1、前言',
            label: 'redux',
          },
          {
            docsPluginId:'life',
            type: 'doc',
            docId: '認識我',
            label: '碎碎念',
          }
        ],
      },
      prism: {
        theme: lightCodeTheme,
        darkTheme: darkCodeTheme,
      },
    }),
};

module.exports = config;



免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM