Docusaurus
by Facebook
![6a66ba8a07cdb7c2f5dd780ac57d8a7b.png](https://i-blog.csdnimg.cn/blog_migrate/89c3252c78d810e5104d782bd0ff3bc4.png)
![965876426e52980aea5280faffab79eb.gif](https://i-blog.csdnimg.cn/blog_migrate/d3eea8444ff9daa60f1543e921dec1a1.gif)
目标
■了解Docusaurus
■快速搭建Docusaurus
■利用Github Pages服务在线托管
■自动化同步Gitee Pages发布
Introduction 介绍
Docusaurus是Facebook推出的高性能的静态网站生成器,可用于快速创建常见的内容驱动型网站(文档、博客、推广营销等)。
Docusaurus v2 is still alpha (since mid-2019) but already quite stable
V2版虽然还处于测试阶段但是已经相对比较稳定,本文采用2.0.0-alpha.69最新版做演示。
虽然Docusaurus团队仍将以帮助你正确的整理文档为重点,但你可以使用Docusaurus 2来构建任何类型的网站,而不仅仅是文档型网站,因为它只是一个React应用程序(感谢MDX让我们可以在markdown中无缝编写JSX)。
Installation 安装
使用npx命令可以在不安装docusaurus脚手架的情况下生成一个新项目:
![451962ca55c310518cc1910ac2a29721.png](https://i-blog.csdnimg.cn/blog_migrate/430ded7ba3b2adcf7f8eb19ca7326396.png)
项目生成后的结构概要:
![30153c37a4eb80560526b4b34ff3e644.png](https://i-blog.csdnimg.cn/blog_migrate/efa21ff9e186ae8f1eb2a78625954a16.png)
blog
存放以博客日期和博客标题为文件名的markdown文件。
例:2020-11-27-hello.md。
![30153c37a4eb80560526b4b34ff3e644.png](https://i-blog.csdnimg.cn/blog_migrate/efa21ff9e186ae8f1eb2a78625954a16.png)
docs
组织你的文档型文件树,可在sidebars.js中定义。
![30153c37a4eb80560526b4b34ff3e644.png](https://i-blog.csdnimg.cn/blog_migrate/efa21ff9e186ae8f1eb2a78625954a16.png)
src
css:存放全局自定义样式。
pages:页面信息和react组件。
![30153c37a4eb80560526b4b34ff3e644.png](https://i-blog.csdnimg.cn/blog_migrate/efa21ff9e186ae8f1eb2a78625954a16.png)
static
存放图片,字体等静态资源。
![615fed9d45b2e8eed96b63ddde005bc6.png](https://i-blog.csdnimg.cn/blog_migrate/8c30664a3be3ae4e945b34e6efc80c3e.png)
docusaurus.config.js
项目的全局配置信息、插件的配置。
![615fed9d45b2e8eed96b63ddde005bc6.png](https://i-blog.csdnimg.cn/blog_migrate/8c30664a3be3ae4e945b34e6efc80c3e.png)
sidebars.js
组织你的文档顺序。
Deployment 部署
我们可以利用Github Pages开通自己的静态网站https://username.github.io。
username 都替换成你自己的Github的账号
1. 仓库配置
在Github上新建一个GitHub Pages repository,跟普通的新建repository是一样的,唯一的区别就是仓库名字必须叫做username.github.io。
本地提交你的代码至本地仓库(使用git commit提交至本地仓库),git branch -M source重命名分支为source(我们做源码分支,Git Pages使用master分支),等待后续配置完毕后推送至远端Github仓库。
2. 修改docusaurus.config.js
![89b115b7348d8422f5abc3792fd79388.png](https://i-blog.csdnimg.cn/blog_migrate/cd9ddc4708f45a706c4b7a9edde3a9ab.png)
3. 集成Travis CI Service
集成后当远端仓库接收到新的推送就会触发Travis CI自动化任务,按以下顺序配置:
■ access token配置
进入https://github.com/settings/tokens生成一个新的personal access token,Select scopes选择repo。
■ Travis CI集成
进入https://github.com/marketplace/travis-ci选择free版然后点击完成订单并进入安装界面,在安装界面选择username.github.io仓库。
■ Travis Ci环境变量配置
Github集成后会自动转到Travis CI你的项目页面,选择More options > Setting > Environment Variables,分别创建下述变量:
GH_NAME:Github用户名
GH_EMAIL:Github邮件
GH_TOKEN:生成的access token
![7c9e01db2cf22893b6507eddb20087a3.png](https://i-blog.csdnimg.cn/blog_migrate/66c353305541aa725c45694c87898c0f.png)
■ 本地项目添加.travis.yml配置文件
在你本地项目根目录下新建.travis.yml文件
![b59823da88ec60e885814a73b4dcd595.png](https://i-blog.csdnimg.cn/blog_migrate/00269b1e27b083f1d614b83e59f3558a.png)
■ 测试
将本地source分支代码推送到远端source分支上会自动触发Travis CI自动化任务,在Travis CI你的项目中Job Log可以看到实时日志,成功后会把静态资源发布到master分支
username.github.io - setting - options
中GitHub Pages应指定为master分支
![e795cc8bba846064ffbd329a91f50cb3.png](https://i-blog.csdnimg.cn/blog_migrate/e2315b2cc9fcbb8a13631bd8e2862b28.png)
至此访问 https://username.github.io 成功
Sync 同步
有时Github的资源响应很慢,我们可以选择国内Gitee Pages托管服务。
我们最终要同步部署的站点
? http://username.github.io
?? http://username.gitee.io
1. 新建Gitee账号
在Gitee上新建一个用户名和Github相同的账号。
2. 导入Github仓库
在Gitee - 仓库选择从github导入,仓库名修改为你的用户名(默认为github同名仓库,请修改)。
3. 开通Gitee Pages
打开Gitee进入你导入后的项目,选择开通Gitee Pages,在开通页面选择启动即可(部署静态网站的分支注意选择master)。
![6d2f13bec0918d026adc7d688187a259.png](https://i-blog.csdnimg.cn/blog_migrate/a1799ed492b07a09e6c923cc6c961bc7.png)
访问 https://username.gitee.io 成功。
4. 配置Github Actions同步更新至Gitee
■ 生成SSH key
ssh-keygen -t rsa -C "you_email@email.com"
生成id_rsa、id_rsa.pub
■ 配置公私钥、密码
Github - 你的仓库 - Settings添加:
Deploy keys:添加生成的公钥
![b4b94daf618da26859ae36356181e295.png](https://i-blog.csdnimg.cn/blog_migrate/a5e5c7132db2f57159de51259d9b6620.jpeg)
Secrects:添加GITEE_PASSWORD密码、
GITEE_RSA_PRIVATE_KEY私钥
![530a45ac0de0dfd50962ab1351955122.png](https://i-blog.csdnimg.cn/blog_migrate/69a33b6f176dd4c9dd15111a3a9ff4ec.png)
Gitee - 设置(不是在仓库中)- 添加SSH公钥
![a72a75f4ddefd9528a83cd3ebebd8324.png](https://i-blog.csdnimg.cn/blog_migrate/012ac0648848176460a13ebd5b51e07d.jpeg)
■ 集成Github Actions
Github Actions是Github的持续集成,Github允许开发者把每个操作写成独立的脚本文件,如果我们需要某个action,只需直接引用人家的即可,整个持续集成过程,就变成了一个 actions 的组合。
在项目根目录下新建.github/workflows/sync.yml
![c3cae7c0ad11b8cd531640c09e386446.png](https://i-blog.csdnimg.cn/blog_migrate/7e4c029d6bec39833504d714b7591227.png)
注:我们在第一个action配置了延迟3秒等待Travis CI任务结束后在进行Gitee同步。
■ 测试
本地推送代码,会进行Travis CI自动化(Github Pages站点托管部署)、Github Actions自动化(Gitee Pages站点托管部署),可以在你的Github仓库里查看具体详情,成功后显示如下:
![5396c14a867f846e6af0813417bf640a.png](https://i-blog.csdnimg.cn/blog_migrate/77d9dac0f489cac86d8655683c95daa4.jpeg)
最终我们完成了利用Github、Gitee托管服务自动化部署站点整个流程,避免了每次打包发布这个繁琐的过程,更加关注于你的内容。
![2468252266a092c42951fce679b3818a.png](https://i-blog.csdnimg.cn/blog_migrate/8e25d1694b6c5082ad5a159785f54487.png)