You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何实现JSDoc的@example标签引入外部文件示例代码,替代手动复制?

如何实现JSDoc的@example标签引入外部文件示例代码,替代手动复制?

我太懂你这种手动同步示例代码的烦躁了——每次改完示例还要复制粘贴到JSDoc里,不仅麻烦还容易出错!下面给你两个实用的方案,不用搞复杂的模板引擎就能解决问题:

方案一:用JSDoc专用插件实现自动引入

有不少JSDoc插件专门支持从外部文件加载@example内容,完全不用手动复制。你可以直接npm安装这类插件,然后在代码里这样写:

// index.js
/**
 * @example {@link ./index.example.js}
 */
function add(a, b) {
  return a + b;
}

不同插件的语法可能略有差异,有些支持更简洁的@example ./index.example.js,它们会在生成JSDoc文档时自动把外部示例文件的内容嵌入到@example标签对应的位置,最终效果和你手动把代码写进去完全一样。而且你编辑index.example.js时,编辑器的语法高亮、错误提示和类型安全功能都能正常用,完美满足你的需求。

方案二:轻量级自定义脚本同步

如果不想依赖第三方插件,写个几行的Node.js小脚本也能搞定,完全算不上“过度工程”。比如创建一个sync-example.js文件:

const fs = require('fs');
const path = require('path');

// 读取外部示例文件内容
const exampleCode = fs.readFileSync(path.join(__dirname, 'index.example.js'), 'utf8');
// 读取目标JS文件内容
const targetFileContent = fs.readFileSync(path.join(__dirname, 'index.js'), 'utf8');

// 替换JSDoc里的示例占位符
const updatedContent = targetFileContent.replace(
  /\/\*\*\s*\* @example import\("index.example.js\)\s*\*\//,
  `/**
   * @example
   * ${exampleCode.split('\n').map(line => ` * ${line}`).join('\n')}
   */`
);

// 将更新后的内容写回文件
fs.writeFileSync(path.join(__dirname, 'index.js'), updatedContent);

然后在你的package.json里加一个脚本命令:

{
  "scripts": {
    "sync-example": "node sync-example.js"
  }
}

每次改完index.example.js,只需要在终端跑一下npm run sync-example,脚本就会自动把最新的示例代码同步到JSDoc里,比手动复制高效多了。

这两种方案都能帮你摆脱手动复制的麻烦,而且完全符合你想要的“等价于手动写入示例”的效果。

备注:内容来源于stack exchange,提问作者Eliav Louski

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.17 10:03:13