docFX-删除API参考目录

时间:2019-01-30 14:31:45

标签: docfx

我正在从C#项目生成API参考。 该项目是大型解决方案的一部分,并且对程序集和名称空间使用长名称约定,因此项目中的每个名称空间都类似于[CompanyName]。[System]。[Area]。[Module]。[...](例如MyBiz.CRM .Sales.Analytics.Persistence.Common和MyBiz.CRM.Sales.Analytics.Persistence.Sql)。 由于项目中的所有名称空间均以MyBiz.CRM.Sales开头。并且我分别为每个系统和区域生成参考,因此我想排除MyBiz.CRM.Sales。在左侧的目录中,仅在标题/标题中提及。

是否可以在docFX中使用,或者我需要编写自定义服务器端生成后事件脚本?

预先感谢

1 个答案:

答案 0 :(得分:0)

我也遇到了同样的问题,并通过编写模板解决了这个问题。它唯一要做的就是覆盖preTransform钩子,您需要在名为toc.extension.js的文件中指定该钩子。在那里,我删除了长名称空间前缀。由于我有多层TOC,因此需要递归执行。您很可能可以将其硬编码为所需的级别。我的代码如下:

exports.preTransform = function (model) {
  // replace recursively the root namespace by ""
  transformItem(model, 1);
  return model;

  function transformItem(item, level) {
    if (item.name) {
      item.name = item.name.replace("Some.Very.Long.Namespace.Prefix.", '');
    } else {
      item.name = null;
    }

    if (item.items && item.items.length > 0) {
      var length = item.items.length;
      for (var i = 0; i < length; i++) {
        transformItem(item.items[i], level + 1);
      };
    }
  }
}

然后,除了docfx.json中的默认模板之外,我只指定自己的模板,这会导致钩子被调用。如下所示:

"build": {
    "template": [
        "default",
        "/path/to/your/template/folder"
    ]
}

参考:Docfx: How to create a custom template