Docfx: Issue about API filter and language selection (original: 关于生成API文档的过滤以及语言切换问题)

Created on 25 Jul 2018  ·  15Comments  ·  Source: dotnet/docfx

DocFX Version Used: 最新

Template used: (default or statictoc or contain custom template)default

Steps to Reproduce:

1.向网站添加另一个API文档时, "metadata":["src":"src3/CoreService.sln","dest":"api3","exclude":["src3/BoolTypeMapping.cs"]]

  1. 使用命令生成 docfx docfx_project/docfx.json
  2. 运行网站 docfx serve docfx_project/_site

Expected Behavior:想要使用该设置过滤掉一些抽象类,不让其被解析并生成到文档中。

Actual Behavior:这样设置失败,该抽象类既然被解析和展示。还有在不使用 default(zh-cn)中文版模板的情况下有没有其他方法在网站上显示一个语言切换的下拉框可以随时切换语言。

---------- Below is the summary of the issue for non Chinese speakers ----------
Issue1: API filter doesn't work:

apiRules:
- exclude:
  uidRegex: ^Appeon\.CoreService\.Data
  type: Namespace

Solution: Make sure uidRegex and type to be inside exclude, with 2 more spaces indention.

apiRules:
- exclude:
    uidRegex: ^Appeon\.CoreService\.Data
    type: Namespace

Issue2: Feature request for a language selector in template.
Solution: Not supported by default. Related issue: #803

Most helpful comment

仔细看了下,估摸着问题在这里:

apiRules:
- exclude:
  uidRegex: ^Appeon\.CoreService\.Data
  type: Namespace

uidRegextype应该是exclude下一层的属性,不应该放在同一层。老哥要不改成下面这段试试?

apiRules:
- exclude:
    uidRegex: ^Appeon\.CoreService\.Data
    type: Namespace

All 15 comments

@XzMitsui Please use API Filter.

@vwxyzh 我后来看文档的时候发现了过滤器这个方法,我也按照其上所述配置了filterConfig.yml文件,但是在最后生成时他没有按照我配置的规则进行过滤。写法如下:

  • exclude:
    uidRegex: ^XXX.XXX.Data
    type: Namespace

@XzMitsui 请问有没有在docfx.json里加入这行?"filter": "filterConfig.yml"

@superyyrrzz 加了,我是按照文档一步步来的,到最后也没有过滤掉。我使用第一种命令行方式时也失败了,他报错:解析值时遇到意外字符:M Path line 0 position 0。 很无助,想要过滤一些东西都失败了。

@superyyrrzz 配置文件中
...
"files":["src/XXX.XXX.sln"],
"exclude":["/bin/",
"/obj/",
"/_site/**"
]
}
],
"dest":"api",
"filter":"filterConfig.yml",
"disableGitFeatures":false,
"disableDefaultFilter":false

当我看到 禁用默认过滤器的时候我以为这个会跟我手动配置的起冲突,于是设置true,结果生成了更多的元数据我才知道原来这个默认过滤器也给我过滤了一些文件。但是这样做也没有让我的过滤器发挥作用。

看报错有可能是filterConfig.yml不符合格式,方便提供下完整文件吗?

也可以试下改docfx.json: "metadata":["src":"src3/*.cs","dest":"api3","exclude":["src3/BoolTypeMapping.cs"]]. excludesrc在类型相同时才起作用,比如都是.cs.

@superyyrrzz 项目文件都在公司,内网的东西拿不到外网,我明天去公司后按照你的方式更改尝试一下,到时候把文件发出来。感谢老哥告知。

@superyyrrzz 这是我过滤文件的配置:

apiRules:
- exclude:
  uidRegex: ^Appeon\.CoreService\.Data
  type: Namespace

这是我docfx.json的配置:

{
  "metadata":[
   {
      "src:"[
      {
       "files":[
          "src/Appeon.CoreService.sln"
       ],
       "exclude":[
           "**/bin/**",
           "**/obj/**",
           "_site/**"   
       ]
     }
    ],
    "dest":"api",
    "filter":"filterConfig.yml",
    "disableGitFeatures":false,
    "disableDefaultFilter":false
   }
]
}

内网文件拿不到外网来,我这里就只能手码展示一下。src下有解决方案和各式各样的文件,我这里只是要读取CoreService的解决方案里包含的若干程序集,并把其中一些抽象类的东西过滤掉不展示出来。过滤文件中配置的Data程序集是需要的,这里我想要试验一下过滤有没有起作用,可是还是没有。

@superyyrrzz @vicancy T_T怎么没信儿了,我尝试更配置文件的写法,但是这个问题仍然存在

仔细看了下,估摸着问题在这里:

apiRules:
- exclude:
  uidRegex: ^Appeon\.CoreService\.Data
  type: Namespace

uidRegextype应该是exclude下一层的属性,不应该放在同一层。老哥要不改成下面这段试试?

apiRules:
- exclude:
    uidRegex: ^Appeon\.CoreService\.Data
    type: Namespace

@superyyrrzz six six six老哥,这样ok了。我忽略了排版格式。。。我的我的,谢了老哥。

@XzMitsui 第一个中文issue,厉害了 👍

@OsmondJiang 大家都是中国人我就懒得用翻译器了(滑稽:

@superyyrrzz 顺带再问一下,就上面提供的过滤的配置,- exclude中该怎么写能够过滤 abstract类。我在过滤时直接填上那些抽象类的路径也可以过滤掉,但觉得不智能,于是想写好规则但是在写了uidRegex后接着去找其中的抽象类时不知道写法了。。。我这里没有用到特性。

@XzMitsui docfx不支持配置专门过滤abstract类,还是得靠uidRegex来写

Was this page helpful?
0 / 5 - 0 ratings