You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在单个Jekyll项目中组织多产品文档输出?

嘿,这个需求完全可行!我帮你拆解一下实现思路和具体步骤,完美适配你用单Jekyll项目管理30+产品文档的场景:

核心思路:利用Jekyll的**集合(Collections)**特性

Jekyll的集合就是为这种「多组独立内容+通用资源复用」的场景设计的——它能让你在单个项目里管理所有产品的文档内容,同时完全复用根目录下的CSS、JS、布局模板和核心配置,不用再复制30个重复项目。

第一步:配置集合与独立内容目录

首先修改项目根目录的_config.yml,为每个产品定义一个集合,每个集合对应一个独立的内容目录:

# _config.yml
collections:
  product1:
    output: true  # 开启该集合的页面生成
    permalink: /product1/:path/  # 定义该产品文档的URL结构
  product2:
    output: true
    permalink: /product2/:path/
  # 剩下的28+个产品依次类推,格式完全一致

然后在项目根目录创建对应的_product1/、_product2/等文件夹,把每个产品的markdown文档直接放进对应的文件夹里就好——通用的CSS、JS、布局模板依然放在根目录的css/、js/、_layouts/文件夹,完全复用。

第二步:通用布局的复用与动态适配

因为所有产品共用Liquid模板,你只需要在_layouts/里写一套通用的布局文件(比如product-docs.html),就能自动适配所有产品的内容。

比如布局里的文档导航部分,可以用Liquid动态调用当前产品集合的所有页面,自动生成专属目录:

<!-- _layouts/product-docs.html -->
<div class="product-nav">
  <h3>当前产品文档目录</h3>
  <ul>
    {% for doc in site[page.collection] %}
      <li><a href="{{ doc.url }}">{{ doc.title }}</a></li>
    {% endfor %}
  </ul>
</div>
<div class="doc-content">
  {{ page.content }}
</div>

每个产品的markdown文档只需要在头部指定这个通用布局:

---
layout: product-docs
title: 产品1快速入门
---
这里是产品1的具体文档内容...

第三步:单独发布单个产品的两种方案

方案1:环境变量控制(快速预览单个产品)

如果只想启动本地服务预览某一个产品(比如product1),可以通过环境变量控制集合的output属性:
首先修改_config.yml里的集合配置,改成动态判断环境变量:

# _config.yml
collections:
  product1:
    output: {% if env == "product1" %}true{% else %}false{% endif %}
    permalink: /product1/:path/
  product2:
    output: {% if env == "product2" %}true{% else %}false{% endif %}
    permalink: /product2/:path/
  # 其他产品同理

然后启动Jekyll服务时指定环境变量:

env=product1 jekyll serve

这样只会生成product1的文档页面,其他产品的output设为false,不会生成页面,启动速度也更快。

方案2:单独配置文件+指定输出目录(适合部署)

如果需要单独生成某一个产品的文档用于部署,可以为每个产品创建一个专属的小配置文件,比如_config-product1.yml:

# _config-product1.yml
collections:
  product1:
    output: true
  product2:
    output: false
  # 把其他所有产品的output都设为false

然后执行build命令,同时加载核心配置和产品专属配置,并指定输出目录:

jekyll build --config _config.yml,_config-product1.yml --destination _site/product1

生成的产物会单独放在_site/product1目录下,直接部署这个目录即可。

额外优化:批量管理30+产品(避免手动重复配置)

如果手动写30个集合配置太麻烦,可以利用Jekyll的Liquid循环批量生成集合配置(需要Jekyll 3.0及以上版本支持):
首先在_config.yml里定义所有产品的列表:

# _config.yml
products: ["product1", "product2", "product3", ..., "product30"]

然后用Liquid循环动态生成collections配置:

{% assign product_list = site.products %}
collections:
{% for product in product_list %}
  {{ product }}:
    output: false
    permalink: /{{ product }}/:path/
{% endfor %}

后续新增产品时,只需要在products列表里添加产品名称即可,不用重复写集合配置。


内容的提问来源于stack exchange,提问作者Andrey Langovoy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 03:51:36