时间:2023-08-05 11:15:02 | 来源:网站运营
时间:2023-08-05 11:15:02 来源:网站运营
[边写边学系列] — 超级好用的文档站建站框架 Docusaurus:前言Docusaurus
,非常匹配你的要求。哈哈哈,扯犊子了,写这篇文章的时候我还不知道这个单词到底是啥意思呢,怎么可能给小伙伴推荐,实际上找寻过程是这样的:Next.js
或者 Gatsby
来动手搭建一个。主要原因是因为搭建的过程是一个知识的积累过程,但是现在的话其实会觉得专业的事情交给专业的框架工具去做,开发者只需要专注做应该做的事情效率更高。使用 Docusaurus 之前先来看看有哪些知名文档站是用它来进建站的。npx @docusaurus/init@latest init [名称] [模板]npx @docusaurus/init@latest init docusaurus-luffyzh-website classic
初始化过后,启动项目,我们来看看效果:docusaurus.config.js
这个核心配置文件,更改一些网站的基本信息。module.exports = { title: '前端周同学/'s Blog', tagline: ' 公众号: 前端周同学', url: 'https://github.com', baseUrl: '/', onBrokenLinks: 'throw', onBrokenMarkdownLinks: 'warn', favicon: 'img/favicon.ico', organizationName: 'luffyZh', // Usually your GitHub org/user name. projectName: 'docusaurus-luffyzh-website', // Usually your repo name. themeConfig: { navbar: { title: '前端周同学', logo: { alt: 'My Site Logo', src: 'img/logo.svg', }, items: [ { type: 'doc', docId: 'intro', position: 'left', label: '文档', }, { position: 'left', to: '/blog', label: '博客', }, { href: 'https://github.com/luffyZh/docusaurus-luffyzh-website', label: 'GitHub', position: 'right', }, ], }, footer: { style: 'dark', links: [ { title: 'Docs', items: [ { label: '文档', to: '/docs/intro', }, ], }, { title: 'Blog', items: [ { label: '博客', to: '/blog', }, ], }, { title: '更多', items: [ { label: '掘金', href: 'https://juejin.cn/user/96412752681079' }, { label: 'GitHub', href: 'https://github.com/luffzh/docusaurus-luffyzh-website', }, ], }, ], copyright: `Copyright © ${new Date().getFullYear()} 前端周同学~`, }, prism: { theme: lightCodeTheme, darkTheme: darkCodeTheme, }, },};
可以看到,我就改了几个简单的配置文案,内容站已经十分的有模有样了,真的是非常简便,忍不住继续向下探索~
docusaurus-luffyzh-website├── blog // 包含博客的 Markdown 文件。 若您不需要博客,您可删除此目录│ ├── 2019-05-28-hola.md│ ├── 2019-05-29-hello-world.md│ └── 2020-05-30-welcome.md├── docs // 包含文档的 Markdown 文件。 您可在 sidebars.js 中自定义文档的侧边栏顺序。│ ├── doc1.md│ ├── doc2.md│ ├── doc3.md│ └── mdx.md├── src // 如页面或自定义 React 组件一类的非文档文件│ ├── css│ │ └── custom.css│ └── pages // 放在此处的所有文件都将被转换成网站页面,类似 Next.js。│ ├── styles.module.css│ └── index.js├── static // 静态资源│ └── img├── docusaurus.config.js // 站点配置文件├── package.json├── README.md├── sidebars.js // 用于指定侧边栏中的文档顺序└── yarn.lock
看了一圈下来发现 Docusaurus 的配置以及功能真的是非常的简洁并且目的十分明确,就感觉它专门就是为了内容站而生的,框架本身只为开发者开了两个口子,一个是文档(主要目的之一:文档站,上面也提到了有那么多的文档站使用它生成的。),另一个是博客。上面提到了,这俩功能是有区别的,那么具体有啥区别呢?/doc
—— 文档文件夹.md
文件的同时,还对下面的子目录进行解析,生成目录树结构的侧边栏,如下图所示:.md
可以直接进行内容的书写,和普通的 Markdown 文档一模一样书写就可以,唯一一点需要注意的就是,可以通过一个头部,来进行文件在侧边栏顺序的展示:---sidebar_position: 3 // 此篇文档显示在第三个顺序---
/blog
—— 博客文件夹.md
文件,但是区别就是它无法识别目录,它生成的侧边栏顺序是根据文档名称来进行排序的~如下图:md
文件文档头部,需要按照一定的规则去匹配识别,详细如下:---slug: first-post // 转化成路由 -> /blog/first-posttitle: First Post // 转化成文档标题author: luffyZh // 转化成文章作者昵称author_title: 周公子 @掘金 // 转化成作者标题author_url: https://github.com/luffyZh // 转化成作者链接author_image_url: https://avatars.githubusercontent.com/u/17840558?s=60&v=4 // 转化成头像tags: [test] // 转化成分类标签---这里直接写标题以外的内容。
对比Gitbook
、VuePress
甚至是语雀和飞书等。相信大家还是想知道,为什么选择用 Docusaurus 而不是用其他的框架?总要有一个理由嘛,关于答案,我们依然可以从官网入手来找找看,让它自己来告诉我们它自身并不是一个 KPI 框架,而是真正能帮开发者解决文档建站痛点问题的。GIT_USER=your_username && yarn deploy
。不过经过我的实践,因为某些仓库某些权限设置,所以并不能部署成功,如下图所示:// build.shGIT_USER=your_github_username GIT_PASS=your_personal_token yarn deploy
关于 personal token 的生成方法以及可能遇到的问题,这里贴两个网站,方便大家排查问题。baseUrl
这个字段由于 Github Pages 的特殊性我们项目里配置的是 /repo-name/
,但是 Vercel 其实没有 Github Pages 的限制,baseUrl
直接是 /
就可以了,所以我们新开一个分支,feature/vercel
,修改配置后重新部署,回到 Vercel,把部署分支切换成 feature/vercel
,再看看效果:Docusaurus
已经帮开发者做了大量的工作,比如首页的生成,路径的配置以及暗黑模式的适配等。那么除了这些功能之外,是否还有其他功能我们没接触到到呢?当然有而且还有很多,在这里,就简单介绍几个,其他的各位看官可以在自己搭建项目的过程里去摸索探寻~pages
文件夹的文件会被渲染成路有页面,所以我们可以使用 React 的开发模式来对我们的页面进行扩展,甚至出了文档以外你也可以把它当成一个系统去开发,下面我简单的把首页进行了改造,最后的效果如下:Docusaurus
内置就支持搜索功能,我们来把他暴露给用户,方便使用。yarn add @docusaurus/theme-search-algolia
然后去官网申请一下权限,因为每一个网站需要一个对应的 apiKey
和 indexName
,官方会给你发邮件把两个必要内容发给你,这里为了简单可用,我使用官方给的 Demo Key 来演示。algolia: { apiKey: '25626fae796133dc1e734c6bcaaeac3c', indexName: 'docsearch',},
配置完过后效果如下图所示,可以看到还是非常的不错的关键词:系列,超级