npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

gentsdoc

v0.1.1

Published

generate typescript document

Downloads

7

Readme

gentsdoc

该工具用于把ts文件生成markdown类型的文档,也可生成独立的api.html文件,如果生成markdown文档,后续可以通过markdown转html文件,同时可以根据数据结果生成全文档html页面,对vue/react/nodom等框架的路由支持较好。

安装

  1. 安装gentsdoc,输入 npm install gentsdoc -g。

用法

  1. 输入gentsdoc -i,进行配置文件初始化,初始化生成genconfig.json文件,用户可修改配置文件。
  2. 输入gentsdoc -g,生成文档。

genconfig.json文件

配置项说明:

  • language:语言 zh(中文) en(英文)
  • src:源ts文件目录
  • dst:存储markdown文件的目录
  • html:如果需要转html,则此项必需配置,html格式为:{dst:html存放路径,title:html标题}
  • baseUrl:基础路径,生成文件内部和文件间超链接时需要
  • fileSuffix:路径后缀名,比如".html",如果最后由markdown文件生成html文件,则可能需要url指向为html文件
  • showPrivate:是否显示私有属性和方法
  • defaultSince:默认版本号,如果有@since,则显示@since值,否则显示defaultSince,如果不设置,则不显示
  • excludeTags:不添加到文档的注释标签,如["excludeone","author","date"]

注释标签

注释标签以“@”开始,下表是gentsdoc支持注释标签。
gentsdoc支持class、interface、class method、class property、function(外置函数)的注释。

标签名|作用于|描述 -|-|- @since|all|起始版本号 @deprecated|all|废弃于 后面给版本号,废弃说明换行写,可以多行 @param|class method,function|参数 @returns|class method,function|返回值 @throws|class method,function|异常 @exclude|all|整段注释不加入文档

gentsdoc支持自定义标签,不做特殊处理,只是在文档中增加标题进行显示

注释说明

注释采用“/**”开头,“*/”结束,如:

/**
 * classA是一个测试类
 * @remarks
 * 主要用于测试用,测试方式如下
 */ 

注释中支持markdown的样式,如代码、表格、列表等,只需要按照markdown的方式写即可。

类(接口)的注释

类和接口的注释一样,注释第一段显示为描述(Description),后面可以追加用户想追加的标签,如下例中的@remark,@example,文档中会显示remark和example标题。

/**
 * 这一段显示为Description
 * @remark
 * 这一段显示在remark
 * @example
 * 使用方式如下: 这一段会显示为代码
 * ```
 * let r = new ClassA(1,'aaa');
 * r.show();
 * ```
 */
class ClassA{

} 

方法(函数)的注释

类内部的函数称为方法,类外部的函数称为外置函数。

/**
 * 这一部分加入方法描述(Description)
 * 可以加入例子代码
 * @param paramName1 这是参数1
 * @param paramName2 这是参数2
 *                  注释内容支持多行
 * @returns     返回
 * @throws      NoomiError
 */
show(id:number,name:string,desc?:string){
    ...
}

属性的注释

/**
 * 这是一个属性
 */ 
propName:string;

完整示例

/**
 * aop 切点类
 * @examplecode
 * ```typescript
 * new AopPointcut('logpoint',['/*']); 
 * ```
 * @exampletable
 * 支持表格格式显示
 * 
 * 参数名|类型|参数说明
 * -|-|-
 * id|string|切点id
 * expressions|Array<RegExp>|切点拦截表达式
 * @examplelist
 * 支持列表
 * + 列表1
 * + 列表2
 * + 列表3
 *
 * @author     fieldyang    默认不添加到文档,参考excludeTags配置
 * @date       2020-01-20   默认不添加到文档
 * @since      0.5.5
 * @deprecared 1.2.3
 *              这个是废弃的说明,可以多行
 *              继续说明废弃原因
*/
class AopPointcut{
    /**
     * 切点id
     */
    id:string;

    /**
     * 表达式数组(正则表达式)
     */
    expressions:Array<RegExp> = [];

    /**
     * 通知数组
     */
    advices:Array<IAopAdvice> = [];

    /**
     * 构造器
     * @param id            切点id(唯一) 
     * @param expressions   该切点对应的表达式数组,表达式为正则表达式串
     */
    constructor(id:string,expressions:Array<string>){
        this.id = id;
        if(!expressions){
            throw new NoomiError("2001");
        }

        if(!Array.isArray(expressions)){
            expressions = [expressions];
        }
        
        expressions.forEach((item)=>{
            if(typeof item !== 'string'){
                throw new NoomiError("2001");
            }
            this.expressions.push(Util.toReg(item));
        });
    }

    /**
     * 匹配方法是否满足表达式
     * @param instanceName  实例名
     * @param methodName    待检测方法 
     * @returns             匹配返回true,否则返回false
     */
    match(instanceName:string,methodName:string):boolean{
        for(let i=0;i<this.expressions.length;i++){
            if(this.expressions[i].test(instanceName + '.' + methodName)){
                return true;
            }
        }
        return false;
    }

    /**
     * 给切点添加通知
     * @param advice    通知对象
     */
    addAdvice(advice:IAopAdvice):void{
        this.advices.push(advice);
    }
}

输出文件说明

src目录下所有ts文件包含的类、接口都会生成独立的markdown文件,所以需要保证类和接口文件名的唯一性。
为方便后续处理,同时生成data.json文件,data.json文件包含4个部分:

  1. funcs:外置函数数组
  2. classes:类数组
  3. interfaces:接口数组
  4. enums:枚举类型数组

每个数组对象包含:

  • title:类/接口/函数名
  • url:url,该url组成格式为baseUrl+title+fileSuffix。例:genconfig.json中设置baseUrl为'/api/',fileSuffix为'.html',类名为ClassA,则url为/api/ClassA.html。

css支持

gentsdoc支持css,以适应markdown转换成html后的效果需求。以下列表中的css class需要用户自行设置。

css类名|作用于 -|- since|开始于 modifier|修饰符 datatype|数据类型 deprecated|废弃于 deprecatedtip|废弃说明 notes|注释,用于枚举类型的注释内容样式

版本

0.0.6

  • 修复函数返回值解析bug
  • 修改类设置since而属性和方法不设置since的bug
  • 增加enum识别
  • 增加类的属性值
  • 增加类属性的类型

0.0.7

  • 修复class或interface定义不换行识别bug
  • 修复内部url生成错误

0.0.8

  • 增加deprecated(废弃)注释

0.0.9

  • 增加一键生成html文档,需要在配置文件中配置html项;
  • 修复map内自定义类型无法链接bug。

0.1.0

  • 更改readme。

0.1.1

  • 修复since和deprecated内容bug;
  • 修改html样式表;
  • 修改枚举类型生成的内容。

转换成html

请使用markdown转html工具进行html转换。

文档效果

  • 生成 markdown 转换后: http://www.noomi.cn/webroute/api/closeConnection
  • 直接生成html格式 : http://www.noomi.cn/relaen/api.html