可以从多个存储库发布 docusaurus 交叉存储库,将文档聚合在一起吗?

Pet*_*nce 6 documentation hugo docusaurus

我的问题:是否有任何开箱即用的 docusaurus 功能(除了https://github.com/facebook/docusaurus/pull/764)可以使以下操作更容易?(我在这里问这个是因为他们的 github 问题模板告诉我那种类型的问题将被关闭,而是在这里问他们)。

在我的公司,我们有几个不同的存储库,其中包含 Markdown 文档以及从各种不同编码语言的源代码文档生成的 Markdown。

我想探索使用 docusaurus 来定义一个中央站点,但从许多不同的存储库中提取文档。

我想这样做:

  • 获取集中搜索索引
    • 帮助可发现性
  • 获得集中拥有的一致主题/用户体验
  • 继续发布到 Confluence 中,以便非技术用户可以查找和浏览内容(如果这成为公司使用的政策)(:()
  • 保留 docs-close-to-code 的所有优点

这是 docusaurus 期望的结构:

docs/            # all documentation should be placed here
website/
  blog/
  build/         # on yarn run build
  core/
    Footer.js
  package.json
  pages/
  sidebars.json
  siteConfig.js
  static/
Run Code Online (Sandbox Code Playgroud)

这是我想要结束的已发布网站的结构:

/v1/products/{product}/{version}/{language}/{content as from docs/}
# e.g.
/v1/products/spanner/{version}/en-GB/readme.html

/v1/internal/{gh-org}/{gh-repo}/{language}/{content as from docs/}
#e.g.
/v1/my-org/my-repo/{version}/en-GB/readme.html
/v1/my-org/my-repo/{version}/en-GB/proto-generated.html
Run Code Online (Sandbox Code Playgroud)

v1是不是因为我预测我会忘记一些东西,它让我可以避免这种情况,并使以后的重大更改重定向更容易)

我认为因此这是我需要将事物聚合成的中间结构:

docs/
  product/
    language/
      prose|generated-lang 
  gh-org/
    repo/
      language/
        prose|generated-lang
website/
  blog/
  product/
    language/
      prose|generated-lang 
  gh-org/
    repo/
      language/
        prose|generated-lang
  core/
    Footer.js
  package.json
  pages/
  product/
    language/
      prose|generated-lang 
  gh-org/
    repo/
      language/
        prose|generated-lang
  sidebars.json
  siteConfig.js
  static/
  product/
    language/
      prose|generated-lang 
  gh-org/
    repo/
      language/
        prose|generated-lang
Run Code Online (Sandbox Code Playgroud)

……这能在一起吗?

我可以很容易地通过 bash 或子模块 git clone 来安排它;这不是一个特别的问题。我想知道是否已经存在一些可以让我避免需要这样做的东西 - 例如 docs-site 工具的本机功能、bazel 规则等等。

小智 6

如果您不需要单页应用程序,也不需要 React(docusaurus在这里提到了这一点),您可以使用MkDocs作为静态站点生成器和multirepo 插件来完成此操作。以下是完成所有设置的步骤。我假设您已经安装了 Python 并且创建了一个 Python venv

  1. python -m pip install git+https://github.com/jdoiro3/mkdocs-multirepo-plugin
  2. mkdocs new my-project
  3. cd my-project
  4. 将以下内容添加到您新创建的mkdocs.yml. 这将配置插件。
plugins:
  - multirepo:
      repos:
        - section: Repo1
          import_url: {Repo1 url}
        - section: Repo2
          import_url: {Repo2 url}
        - section: Repo3
          import_url: {Repo3 url}
Run Code Online (Sandbox Code Playgroud)

现在,您可以运行mkdocs servemkdocs build,这将构建一个静态站点,其中所有文档都位于一个站点中。

这会:

  • 获得集中的搜索索引以帮助发现
  • 获得一个集中拥有的一致主题/UX(我建议使用 Material for MkDocs)
  • 保留文档接近代码的所有优点

也许可以为 docusaurus 编写类似的插件。


dow*_*owi 4

您可以使用脚本来提取这些 md 文件,将它们放在正确的位置,然后构建 docusaurus。您可以在对源存储库之一进行任何更改时自动使用 Github 的操作来执行此操作