【jsdoc-to-markdown】一步步实现js文件的文档生成
创始人
2024-01-17 16:31:56

文章目录

    • 导读
      • 开发环境
    • 安装Vs code插件:Doxygen Documentation Generator
      • 效果
      • 优势
    • jsdoc-to-markdown的使用
      • 了解 jsdoc
      • jsdoc-to-markdown安装
      • 创建测试文件example.js
      • jsdoc-to-markdown使用
      • jsdoc-to-markdown踩坑!!!
    • 参考资料

导读

这个需求有点怪,之前基本都是后台生成文档,前端对接就行了。
不过当团队大了,或者异地办公等原因,导致前端也需要进行对接,因此有了这篇文章。

开发环境

版本号描述
文章日期2022-10-27
操作系统Win10-1607
nvm version1.1.9
node -vv12.22.12npm -v (6.14.16)
IDEA2021.3

安装Vs code插件:Doxygen Documentation Generator

插件安装后,直接输入/**,会自动弹出注释的选项,我们选择Document This的选项。如下图:
在这里插入图片描述

效果

  /*** 功能设置:** @example*    await setValue('mega_money', true);* @param {*} target* @param {*} arg* @param {string} [source='']* @param {number} [cheatId=0]* @returns undefined* @memberof Trainer*/async setValue(target, arg, source='', cheatId=0) {

优势

  • 支持多种语言
  • 自动识别参数及类型

jsdoc-to-markdown的使用

了解 jsdoc

jsdoc-to-markdown基于jsdoc实现的,可以参考文章《jsdoc接口文档生成器》https://blog.csdn.net/youlinhuanyan/article/details/105667770

jsdoc-to-markdown安装

全局安装:
npm install -g jsdoc-to-markdown

创建测试文件example.js

/*** A quite wonderful function.* @param {object} - Privacy gown* @param {object} - Security* @returns {survival}*/
function protection (cloak, dagger) {}

jsdoc-to-markdown使用

单文件:jsdoc2md example.js
多文件:jsdoc2md -f example.js example2.js > all.md

编程方式实现
https://github.com/jsdoc2md/jsdoc-to-markdown/wiki/How-to-create-one-output-file-per-class

'use strict'
const jsdoc2md = require('jsdoc-to-markdown')
const fs = require('fs')
const path = require('path')/* input and output paths */
const inputFile = 'example.js'
const outputDir = __dirname/* get template data */
const templateData = jsdoc2md.getTemplateDataSync({ files: inputFile })/* reduce templateData to an array of class names */
const classNames = templateData.reduce((classNames, identifier) => {if (identifier.kind === 'class') classNames.push(identifier.name)return classNames
}, [])/* create a documentation file for each class */
for (const className of classNames) {const template = `{{#class name="${className}"}}{{>docs}}{{/class}}`console.log(`rendering ${className}, template: ${template}`)const output = jsdoc2md.renderSync({ data: templateData, template: template })fs.writeFileSync(path.resolve(outputDir, `${className}.md`), output)
}

jsdoc-to-markdown踩坑!!!

上面说的是官网教程,不过执行完后,小编的电脑会报下面的错误:
JSDOC_ERROR: There are no input files to process.
在这里插入图片描述

众里寻他千百度,终于在stackoverflow上找到了答案:
在这里插入图片描述

我的jsdoc是全局安装的,配置文件所在目录为J:\Users\Administrator\AppData\Roaming\nvm\v12.22.12\node_modules\jsdoc-to-markdown\node_modules\jsdoc
|
everything全局搜索文件jsdoc\conf.json.EXAMPLE所在目录就是了,创建个文件名为conf.json的配置,填入下面配置:

{"tags": {"allowUnknownTags": true},"source": {"include": ["."]},"plugins": [],"templates": {"cleverLinks": false,"monospaceLinks": false,"default": {"outputSourceFiles": true}}
}

参考资料

  • Vs code自动生成Doxygen格式注释 https://www.cnblogs.com/silencehuan/p/11875958.html
  • jsdoc-to-markdown官网 https://github.com/jsdoc2md/jsdoc-to-markdown
  • 踩坑原文 https://stackoverflow.com/questions/64978721/js-includepattern-not-working-there-are-no-input-files-to-process

相关内容

热门资讯

埃菲尔铁塔在哪 中国仿建埃菲尔... 2019年4月26日,广西南宁市,街头惊现一座巨型山寨版埃菲尔铁塔,高约20米,白色塔身,造型逼真,...
怎么样消灭臭虫 臭虫用什么药消... 奔奔虫控|被吸血臭虫骚扰的滋味,你体会过吗?相信被臭虫骚扰过的人都不想再体验一次了吧?那么臭虫应该怎...
苗族的传统节日 贵州苗族节日有... 【岜沙苗族芦笙节】岜沙,苗语叫“分送”,距从江县城7.5公里,是世界上最崇拜树木并以树为神的枪手部落...
北京的名胜古迹 北京最著名的景... 北京从元代开始,逐渐走上帝国首都的道路,先是成为大辽朝五大首都之一的南京城,随着金灭辽,金代从海陵王...
应用未安装解决办法 平板应用未... ---IT小技术,每天Get一个小技能!一、前言描述苹果IPad2居然不能安装怎么办?与此IPad不...
脚上的穴位图 脚面经络图对应的... 人体穴位作用图解大全更清晰直观的标注了各个人体穴位的作用,包括头部穴位图、胸部穴位图、背部穴位图、胳...
长白山自助游攻略 吉林长白山游... 昨天介绍了西坡的景点详细请看链接:一个人的旅行,据说能看到长白山天池全凭运气,您的运气如何?今日介绍...
猫咪吃了塑料袋怎么办 猫咪误食... 你知道吗?塑料袋放久了会长猫哦!要说猫咪对塑料袋的喜爱程度完完全全可以媲美纸箱家里只要一有塑料袋的响...
世界上最漂亮的人 世界上最漂亮... 此前在某网上,选出了全球265万颜值姣好的女性。从这些数量庞大的女性群体中,人们投票选出了心目中最美...
埃菲尔铁塔在哪 中国仿建埃菲尔... 2019年4月26日,广西南宁市,街头惊现一座巨型山寨版埃菲尔铁塔,高约20米,白色塔身,造型逼真,...
苗族的传统节日 贵州苗族节日有... 【岜沙苗族芦笙节】岜沙,苗语叫“分送”,距从江县城7.5公里,是世界上最崇拜树木并以树为神的枪手部落...
苁蓉的食用方法 鲜苁蓉的吃法有... 肉苁蓉号称“温而不热,补而不峻,暖而不燥,滑而不泄,故有从容之名。”历来也是传统药食同源的滋补佳品。...
北京的名胜古迹 北京最著名的景... 北京从元代开始,逐渐走上帝国首都的道路,先是成为大辽朝五大首都之一的南京城,随着金灭辽,金代从海陵王...