.. _docusaurus_startup:
==========================
Docusaurus快速起步
==========================
`Docusaurus 文档 `_ 是使用最广泛的基于 :ref:`react` 开发的Markdown文档平台。我在 :ref:`docs_as_code` 调研不同平台,并且尝试了 :ref:`nextra` 未果,然后我将目光投向了这个由facebook开源的文档平台。
特点
==========
- Docusaurus是一个易于使用的 **静态站点生成器** (类似于 :ref:`mkdocs` / :ref:`jekyll` / :ref:`sphinx_doc` )
- 可以快速搭建具有客户端导航的 **单页应用** ,这是因为它基于 :ref:`react` 所以不仅能够开箱即用,还提供了定制以用于构建 **各种网站** (个人网站、产品、博客、营销主页等等)
简单来说,Docusaurus就是一个高度定制化的 :ref:`react` 内容平台,如果不介意风格单一,想要快速推出 **基于内容** 的网站,那么参考 `最佳Docusaurus站点 `_ 可以构建面向用户的生产网站。
快速起步
========
- 在安装了 :ref:`install_nodejs` 之后,就可以快速创建Docusaurus网站,以下是我的案例:
.. literalinclude:: docusaurus_startup/install
:caption: 创建Docusaurus网站
:emphasize-lines: 2
.. literalinclude:: docusaurus_startup/install_output
:caption: 创建Docusaurus网站
- 启动:
.. literalinclude:: docusaurus_startup/start
:caption: 启动Docusaurus
注意默认仅监听 ``localhost`` ,所以如果需要在所有接口上提供,则参考 `Docusaurus docs: CLI `_ 传递参数 ``--host 0.0.0.0`` :
.. literalinclude:: docusaurus_startup/start_0
:caption: 启动Docusaurus监听所有端口
此时访问端口 ``3000`` 可以看到 Docusaurus 提供了一个默认网站,展示了一个简单的教程
build
==========
- 在完成了内容构建之后,执行 ``build`` 指令可以为最终部署构建输出文件(静态html)。我的实践是在 :ref:`docusaurus_multi_docs` 和 :ref:`docusaurus_i18n` 之后执行这个构建:
.. literalinclude:: docusaurus_startup/build
:caption: 构建输出
.. note::
通过 ``ngpm run build`` 可以完整构建整个网站,对于 :ref:`docusaurus_i18n` 也可以提供多语言服务和自如切换,是最终的展示结果
我遇到报错:
.. literalinclude:: docusaurus_startup/build_error
:caption: build报错
:emphasize-lines: 20,22,24
我经过对比(grep)发现,原来是 :ref:`docusaurus_i18n` 时,采用了 ``docusaurus write-translations`` 指令来生成 ``i18n`` 目录结构以及对应 ``.json`` 文件。这些 ``.json`` 文件是包含了一些 ``footer.json`` 配置文件,其中定制了一些导航链接指向 ``docs/intro.md`` ,我在生成了 ``i18n`` 目录之后再修订 ``docusaurus.config.js`` 中的 ``docs`` 路由 ``routeBasePath`` 没有及时更新到 ``i18n`` ,这样是导致 ``build`` 报错的原因。另外,涉及到 ``src/pages/index.js`` 包含了 ``docs/intro`` 链接需要修订
如果要忽略错误可以调整 ``docusaurus.config.js`` 设置(但不建议):
.. literalinclude:: docusaurus_startup/docusaurus.config_onBrokenLinks.js
:caption: 调整 ``docusaurus.config.js`` 设置 ``onBrokenLinks`` 参数
:emphasize-lines: 2
这样 ``build`` 就能够顺利完成,就会在项目目录下构建一个 ``build`` 目录包含了最终静态文件
serve
========
- 启动服务可以从 ``build`` 目录提供网站服务,由于是静态网站,所以性能会比开发模式下实时渲染快很多,并且可以使用普通 :ref:`nginx` 对外提供服务:
.. literalinclude:: docusaurus_startup/serve
:caption: 提供服务
参考
=====
- `Docusaurus Introuction `_
- `Docusaurus 介绍 `_