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

yapi-tools

v0.4.6

Published

yapi的配套工具,自动获取接口信息

Downloads

2

Readme

使用

通过npm 使用安装的 npm i yapi-tools -g --registry [学良的本地目录 例如 http://10.1.174.84:4873]

源码使用:在本文件夹 执行 npm link 将命令安装到全局,

在命令行键入 yapiTools即可使用。

本工具将在执行目录生成 yapi.tool.config.js配置文件

支持自定义模板

生成代码示例:

/**
 * @name 判断是否是管理员
 * @apiAuthor 接口负责人: NBT
 * @addTime   添加时间 : 2022年3月22日 15:8:56
 * @upTime    更新时间 : 2022年3月22日 15:8:56
 * @yapiUrl   接口地址: https://*.*.*.com/project/1199/interface/api/42659
 * @param {string} orgId - 路径参数: 
 * @param {object} [options={}] - axios请求配置参数,例如timeout等
 * @return {Promise}
 */
export const userAndAppVisibleListIsAdminOrgId = (orgId, options = {}) => {
  return http
    .get(`/userAndAppVisibleList/isAdmin/${orgId}`, options)
    .then(res => {
      if (res.data.result) {
        return Promise.resolve(res.data.value)
      } else {
        return Promise.reject(res.data.error)
      }
    })
    .catch(res => {
      return Promise.reject(res)
    })
}

支持内容分割

针对已存在的api文件进行接口生成 ,首次使用会保留已有的代码 在代码下放注入生成的内容,格式如下

// --yapi-tools-auto-output-begin--

// 中间是接口的内容

// --yapi-tools-auto-output-end--

后续的代码更新只会更新 标识符--yapi-tools-auto-output-begin----yapi-tools-auto-output-end--中间的内容

标识符begin之前的代码和end之后的代码将会保留

以此,用户可以和自动生成文件共同使用同一个文件

注意:在生成时需要先保存自有的代码

由此可推导出,在现有的api文档中可以自主添加标识符来控制内容添加的位置

配置信息

| 配置信息 | 描述 | 备注 | |-|-|-| |isOriRes |then里的处理方式,默认是会取到的value值,若不想自动取value值,那么就设置为false,直接将res返回|默认是true | |tem |模板文件| | |dtsObjectKey |d.ts 文件响应值生成的参考数据源,默认是'value'| |

| 字段说明 | 描述 | 备注 | |-|-|-| |baseUrl |项目域名,为yapi访问的域名| | |token |项目token,做用户验证,在项目设置里,做项目的区分| | |outPutFile |输出文件;输出文件到集测。| | |mockUrl |mock地址,(自动生成)| | |lastSelectMenus |上次选择的目录,以便再次执行| | |apiList |上次选择的接口,以便再次执行| |

设置模版文件

模板参数说明

|配置信息 | 描述 | 备注 | |-|-|-| |apiName |接口名称|| |inParamData |所有入参数据 例如:body = [], options = {}|| |inParamDataOfInterface |带有类型描述的入参|| |methodLocalStr |方法名称 支持post,get,put,delete等|| |apiPath |:接口地址|| |paramsData | ajax方法接收的参数格式 | body, {headers: { 'Content-Type': 'application/json'}, ...options} |methodLocalStr |方法名称 支持post,get,put,delete等|| |jsDoc |jsdoc的数据|| |responceValueInterface |相应参数||

内置系统模板

export const {{apiName}} = ({{inParamData}}) => {
  return http
    .{{methodLocalStr}}(\`{{apiPath}}\`{{@ paramsData}})
    .then(res => {
      if (res.data.result) {
        return Promise.resolve(res.data.value)
      } else {
        return Promise.reject(res.data.error)
      }
    })
    .catch(res => {
      return Promise.reject(res)
    })
}

若是d.ts 模板

{{@ jsDoc}}
export function {{apiName}} ({{@ inParamDataOfInterface}}):Promise<{{@ responceValueInterface}}>

若直接生成ts的话,

{{@ jsDoc}}
export function {{apiName}} ({{@ inParamDataOfInterface}}):Promise<{{@ responceValueInterface}}>{
  return http
    .{{methodLocalStr}}(\`{{apiPath}}\`{{@ paramsData}})
    .then(res => {
      if (res.data.result) {
        return Promise.resolve(res.data.value)
      } else {
        return Promise.reject(res.data.error)
      }
    })
    .catch(res => {
      return Promise.reject(res)
    })
}

若是输出文件是是ts为结尾的,默认输入带有类型的文件;也可以自定义模版

卸载

源码使用: 在本文件夹 执行 npm unlink 即可 npm :npm uninstall yapi-tools -g

更新日志

  • 202403011

    • 增加对不规范的yapi进行兼容
  • 20240306

    • 增加对不规范的yapi进行兼容,例如:cc财税的接口
  • 20230519

    • 增加ts转换相应值的类型导出和入参的类型导出 *ParamsType,*ResultType
  • 20230517

    • 增加ts转换,判断后缀名,是.ts的直接输出ts代码,自带类型的。
  • 20230228

    • 支持给单独文件统一设置Opions参数。一般用于request时的拦截处理
  • 20230211

    • 支持一个项目使用多个yapi项目
    • 支持新增文件时,支持新设项目
  • 20220913

    • 支持支持多个文件切换生成
  • 20220704

    • 支持自定义模版,(目前在配置文件里处理)
    • 支持dts文件响应值自定义取值
  • 20220627

    • 增加枚举类型值的提示

      image-20220627153123028

  • 20220623

    • 增加d.ts 描述文件

    • 增加响应值智能提示

      image-20220627153207086

  • 20220517

    • 增加初始化方法 进行清洗数据
      • 初始化 req_body_other 添加到 req_body_form 里
    • 增加文件更新标识,来固定内容输出位置
    • 优化数据输出,
    • 添加询问使用mock请求

TODO

  • [x] 模板自定
  • [x] 输出d.ts描述文件
  • [x] 通过输出文件名字不同进行不同的设置
  • [x] 可以通过目录切割api文件
  • [x] 增量更新文档
  • [ ] 目前是使用axios适配的,需要扩展xhr库的使用形式。
  • [ ] 结合vscode编辑器,作为扩展,方便使用