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

如何在无JSDoc时为Rollup插件的.js文件生成.d.ts类型声明

不依赖JSDoc为Rollup插件JS文件生成.d.ts类型声明的方法

像rollup-plugin-commonjs这类纯JS编写的Rollup插件,之所以能提供.d.ts类型声明,核心是手动编写类型文件,当然也可以借助工具辅助生成后优化,具体方法如下:

1. 手动编写类型声明(推荐,也是官方插件的做法)

对于Rollup插件这种API结构明确但配置项复杂的场景,手动写类型声明是最靠谱的方式:

  • 先理清插件的导出逻辑:比如rollup-plugin-commonjs的默认导出是一个接收配置参数的函数,返回符合Rollup插件规范的对象(包含name、transform、resolveId等钩子)
  • 复用Rollup官方的类型:Rollup本身提供了Plugin等核心类型,直接引入就能复用,不用自己重复定义插件的基础结构
  • 编写.d.ts示例:
import type { Plugin } from 'rollup';

// 定义插件的配置项类型
export interface CommonjsOptions {
  include?: string | RegExp | (string | RegExp)[];
  exclude?: string | RegExp | (string | RegExp)[];
  extensions?: string[];
  // 其他配置项根据插件实际功能补充
}

// 定义插件函数的类型
declare function commonjs(options?: CommonjsOptions): Plugin;

export default commonjs;
  • 最后在package.json里指定类型文件路径:"types": "dist/index.d.ts",这样TS就能自动识别

2. 用工具生成基础类型后手动修正

如果不想从零开始写,可以先用工具生成初步的.d.ts,再调整细节:

  • 用dts-gen:这是专门生成类型声明的工具,安装后执行dts-gen -m 你的插件包名就能生成基础类型
  • 用TypeScript的tsc命令:执行tsc --allowJs --declaration --emitDeclarationOnly src/index.js,TS会通过类型推断生成对应的.d.ts
  • 注意:自动生成的类型经常会有不准确的地方(比如把可选参数标成必填、复杂函数的重载没处理好),必须手动检查修正后才能用

为什么这类插件不用JSDoc?

成熟的Rollup插件更愿意手动写类型,原因很简单:

  • 手动编写的类型更精准,能覆盖所有边缘场景和自定义配置
  • 不会让JS文件被大量JSDoc注释塞满,保持源码简洁
  • 类型声明和实现分离,更新插件功能时同步修改类型文件更方便

内容的提问来源于stack exchange,提问作者lwtfy

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 13:15:57