docusaurus简单使用
前言
docusaurus是一款使用markdown编写手册文档的工具,同类竞品有vitePress (放弃不维护的vuepress吧)
目前来看,比后者多了10k个start。
docusaurus是基于react,而vitepress是基于vue的,使用什么取决于 看你技术栈或者要编写文档的内容了。
创建项目
脚手架创建项目,比如我想创建一个名为linux-book
的项目
npx create-docusaurus@latest my-website classic
设置默认语言
然后集成i18n,不然上一页下一页 以及基本的语言默认都是英语。
docusaurus帮我们翻译了一些基础的单词,我们去下载语言即可。
下载完成后复制到项目根目录中 my-website/i18n/zh-Hans
。
最后在配置文件 docusaurus.config.js
中,添加如下配置即可
{
// 其它配置
// ...
// 本地化语言配置
i18n: {
defaultLocale: "zh-Hans",
locales: ["zh-Hans"],
},
}
基础知识
docusaurus 由几个重要的部分构成:站点元数据、主题、插件、预设,
分别对应其配置文件中的
{
// 站点元数据
title: "前端",
tagline: "前端非常酷",
favicon: "img/favicon.ico",
url: "https://your-docusaurus-site.example.com",
baseUrl: "/",
// 主题、插件、预设
presets: [ ],
plugins: [ ],
themes: [ ]
}
Docusaurus 核心不提供它自己的任何功能。
它将所有功能都委托给了独立插件,如果没有安装插件,站点就不会包含任何路径,比如:
但是,你可能不需要一个一个地安装常用插件:“它们可以作为预设的一部分被打包分发”。 对于大多数用户来说,插件是通过预设选项来配置的。我们有一份官方和社区非官方插件。若你想要添加一些功能功能记得翻翻:或说不定有人可能已经帮你实现好了!
当然,如果你觉得自己很有精力,你也可以阅读插件指南或插件方法总览了解如何自己制作插件。
隐藏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章_规范
---
## 说明

为了保证开发风格和质量,实现较好的可读性和可维护性。
当然还有一个偷懒的办法,以上都不用做,你只需要将 对应文件夹里的某个md文件与文件同名即可。
侧边栏标题
左边侧边栏的栏目和页面内的一级标题,都取的是md文件内定义的title
xxx.md
---
title: 第3章 脚手架
---
如果没有title属性 则默认取之当前文件的id(如果不在文件内声明id,则默认取文件名作为id)
侧边栏排序
多个库/文档(实例)
文档从上到下有四个组织架构:独立页面、侧边栏、版本、插件实例。
单实例
单个文档库(既单实例) 其实是插件 @docusaurus/plugin-content-docs
来帮你实现的。
不过我们平时通过预设 @docusaurus/preset-classic
来配置和使用了这个插件。
{
// 其它配置
// ...
presets: [
[
"classic",
{
docs: {
// 这里其实就是 @docusaurus/plugin-content-docs 的配置项
sidebarPath: require.resolve("./sidebars.js"),
path: "docs/redux",
routeBasePath: "redux",
},
},
],
];
}
需要注意的是,通过预设我们配置的文档,一定被归属于你项目的默认文档实例( 既插件plugin-content-docs 的实例)。
虽然不管我们有没有配置 的 默认文档实例子配置id,它都为 default。
多实例
多个文档库,其实就是调用了多次 @docusaurus/plugin-content-docs
{
// 其它配置
// ...
presets: [
[
"classic",
{
docs: {
// 默认实例(也是 @docusaurus/plugin-content-docs一个实例)
path: "docs/html",
sidebarPath: "./sidebars.ts",
routeBasePath: "html",
},
},
],
],
plugins: [
[
"@docusaurus/plugin-content-docs",
{
id: "two", // 唯一的 ID,用于标识这一实例
path: "docs/two", // 文档内容路径
routeBasePath: "two", // 路由路径,例如 https://example.com/two
sidebarPath: "./sidebars.ts", // 侧边栏配置
},
],
],
};
多实例优化
以下只是个人觉得:既然是多文档(实例)模式,那我所有的文档都在plugin配置,不和预设相互掺合。
{
presets: [
[
"classic",
{
docs: false, // 预设里不用@docusaurus/plugin-content-docs帮我们创建默认实例
blog: {
showReadingTime: true,
},
theme: {
customCss: "./src/css/custom.css",
},
},
],
],
plugins: [
[
"@docusaurus/plugin-content-docs",
{
id: "default", // 必须是default
path: "docs/html",
routeBasePath: "/html",
sidebarPath: "./sidebars.ts",
},
],
[
"@docusaurus/plugin-content-docs",
{
id: "exam-module",
path: "docs/exam",
routeBasePath: "exam",
sidebarPath: "./sidebars.ts",
},
],
"docusaurus-plugin-sass",
],
};
当然,你甚至可以完全不使用预设 @docusaurus/preset-classic
, 这样避免非得配置docs插件。
然后在单独让 @docusaurus/theme-classic主题引入进去。
但是这样默认的主页却不现实了,不知道为啥,其他倒是还好,估计预设做了这些处理,所以综上,我们还是如上做法(docs: false)好使!
顶部导航
这一章,在API>主题 有详细的介绍。
以下记录一个上边代码对应的菜单,既 文档集类型 docSidebar,即导航对应的是 多文档实例
{
navbar: {
// ...
items: [
{
type: "docSidebar", // 导航类型(比如单独页面、文档集(含侧边栏)、折叠栏、超链外接等等)
sidebarId: "tutorialSidebar", // 绑定的侧边栏 在绑定的插件sidebarPath中定义
position: "left", // 位置
label: "网页", // 导航名称
docsPluginId: "default", // 对应的插件ID
},
{
type: "docSidebar",
sidebarId: "tutorialSidebar",
position: "left",
label: "面试",
docsPluginId: "exam-module",
},
],
},
// 其他配置...
};
docusaurus简单使用的更多相关文章
- docusaurus 生成的website 通过circleci部署gh-pages
docusaurus 是facebook 开源的一款文档脚手架工具,可以快速的进行文档生成,基于markdown 同时已经内置了gh-pages 发布的命令,对于ci 工具,我们只需要简单的配置就可以 ...
- 使用docusaurus 搭建开发&&api && 博客站点
对于日常的开发系统以及产品一个简单,方便的api&&文档网站可以七很大的作用 docusaurus 是facebook开源的文档管理框架,使用它我们可以快速的创建专业. 完备的文档站点 ...
- 个人网站迁移之旅:从博客到知识库,从 Hexo 到 Docusaurus
或是出于跟风,或是为了简历能好看点,2020 年 2 月,在翻看了中文互联网大量的「免费个人网页搭建教程」后,我选择了 Hexo + Github Pages 的方案,找了一款看上去还不错的主题,搭建 ...
- 【造轮子】打造一个简单的万能Excel读写工具
大家工作或者平时是不是经常遇到要读写一些简单格式的Excel? shit!~很蛋疼,因为之前吹牛,就搞了个这东西,还算是挺实用,和大家分享下. 厌烦了每次搞简单类型的Excel读写?不怕~来,喜欢流式 ...
- Fabio 安装和简单使用
Fabio(Go 语言):https://github.com/eBay/fabio Fabio 是一个快速.现代.zero-conf 负载均衡 HTTP(S) 路由器,用于部署 Consul 管理的 ...
- node.js学习(三)简单的node程序&&模块简单使用&&commonJS规范&&深入理解模块原理
一.一个简单的node程序 1.新建一个txt文件 2.修改后缀 修改之后会弹出这个,点击"是" 3.运行test.js 源文件 使用node.js运行之后的. 如果该路径下没有该 ...
- 哪种缓存效果高?开源一个简单的缓存组件j2cache
背景 现在的web系统已经越来越多的应用缓存技术,而且缓存技术确实是能实足的增强系统性能的.我在项目中也开始接触一些缓存的需求. 开始简单的就用jvm(java托管内存)来做缓存,这样对于单个应用服务 ...
- 在Openfire上弄一个简单的推送系统
推送系统 说是推送系统有点大,其实就是一个消息广播功能吧.作用其实也就是由服务端接收到消息然后推送到订阅的客户端. 思路 对于推送最关键的是服务端向客户端发送数据,客户端向服务端订阅自己想要的消息.这 ...
- 我的MYSQL学习心得(一) 简单语法
我的MYSQL学习心得(一) 简单语法 我的MYSQL学习心得(二) 数据类型宽度 我的MYSQL学习心得(三) 查看字段长度 我的MYSQL学习心得(四) 数据类型 我的MYSQL学习心得(五) 运 ...
- 使用 Nodejs 搭建简单的Web服务器
使用Nodejs搭建Web服务器是学习Node.js比较全面的入门教程,因为要完成一个简单的Web服务器,你需要学习Nodejs中几个比较重要的模块,比如:http协议模块.文件系统.url解析模块. ...
随机推荐
- TensorFlow重新导入restore报错: OP_REQUIRES failed at save_restore_v2_ops.cc:184 : Not found: Key Variable not found in checkpoint
最近在解决TensorFlow模型重新导入时遇到下面这个问题,发现网上很多解决办法都在误导,其实报错已经很明显说明问题的根源,只是我们不一定找到问题的根源.报错显示 不能在快照中找到 对应的键值. 报 ...
- 聊聊智商税:AI知识库
提供AI咨询+AI项目陪跑服务,有需要回复1 DeepSeek一体机是一种神奇的存在,很多公司跟风购买后发现一个尴尬的事情:用不起来,于是一体机厂家或者中间商便需要在其中叠加AI场景,这里最常见的场景 ...
- ThreadLocal 内存泄漏原因和解决方法
一.ThreadLocal 内存泄漏的原因 ThreadLocal 的内存泄漏问题主要与其底层实现 ThreadLocalMap 的结构和垃圾回收机制有关.以下是核心原因: 1.ThreadLocal ...
- Asp.net mvc基础(二)Controller给View传递数据的方式
1.ViewData传值 步骤一:通过在控制器中以键值对的形式进行赋值 ViewData["键"] = 值 赋值: 调用: 2.ViewBag传值 ViewBag是dynamic类 ...
- 大模型参数组成计算QwQ-32B为例
计算大模型参数量主要依赖于模型的架构和各层配置,我们把常用大模型分为三层:输入层.transformer层.输出层. 输入层 参数组成是Embedding的词表总和 transformer层 参数组成 ...
- rider 跑不动了,快找车吧=vscode
我的笔记本跑rdier有点吃紧了,T440s; rider的慢速是我有点难以接受了,在开发效率和性能方面综合考虑,我考虑换上vscode了. 做.net core web开发完全够用了,也不用各种等待 ...
- 【渗透 Tips】解决Edge的IE模式下无法抓包情况
问题说明 在日常渗透中往往避免不了站点的环境适配问题,有一些站点只能使用IE模式访问,此时便会想着可能使用内置proxy插件代理至抓包软件即可,事实上这并不能很好解决. 如上图所示,即使挂上了yaki ...
- 【BUG】ELF文件执行时出现段错误Segmentation fault,解决:使用010编辑器修改ELF文件不可执行段权限
问题:段错误,.eh_frame不可执行. 需求:改执行权限. 工具:010 Editer,我的版本:12.0.1 Windows 10. 工具下载:010编辑器官网下载页. 第一步 查看段的执行权限 ...
- [HTB] 靶机学习(一)Heal
[HTB] 靶机学习(一)Heal 概要 学习hackthebox的第一天,本人为初学者,将以初学者的角度对靶机渗透进行学习,中途可能会插入一些跟实操关系不大的相关新概念的学习和解释,尽量做到详细,不 ...
- openEuler 20.03 LTS安装单病种前置机
# 下载配置文件包 cd /opt wget https://interface-soft.oss-cn-hangzhou.aliyuncs.com/manual-package/config.tar ...