# doctrine 中文文档

规范地址：https://npmcn.com/package/doctrine/

版本：3\.0\.0
npm 元数据更新时间：2023-06-22T16:31:41.771Z
中文译文更新时间：2026-11-05T03:15:19.126Z
软件包许可：Apache-2\.0

本文由上游 README 翻译，可能存在偏差，请结合原文核对 API、命令与配置。版权与许可归原作者所有。

原始 npm 页面：https://www.npmjs.com/package/doctrine
原文对照：https://npmcn.com/package/doctrine/?lang=original
项目主页：https://github.com/eslint/doctrine
源码仓库：https://github.com/eslint/doctrine

## 关键信息（来自 npm 元数据）

- 包体积（解压后）：106 kB，9 个文件
- 模块格式：CommonJS
- TypeScript 类型：未声明
- Node.js 要求：\>=6\.0\.0
- 运行依赖：1 个
- 首次发布：2012-05-10T18:28:39.036Z
- 最新版本发布：2018-11-10T02:38:01.125Z
- 近 30 天下载量：506804142（2026-10-05 至 2026-11-03，npm 官方下载统计）
- 已发布版本数：34（近 12 个月 0 个）

## 中文简介

JSDoc解析器

## 安装

```sh
npm install doctrine
```

也可以使用：`pnpm add doctrine`、`yarn add doctrine`、`bun add doctrine`

## README

[![NPM version](https://img.shields.io/npm/v/doctrine.svg?style=flat-square)](https://www.npmjs.com/package/doctrine) [![build status](https://img.shields.io/travis/eslint/doctrine/master.svg?style=flat-square)](https://travis-ci.org/eslint/doctrine) [![Test coverage](https://img.shields.io/coveralls/eslint/doctrine/master.svg?style=flat-square)](https://coveralls.io/r/eslint/doctrine?branch=master) [![Downloads](http://img.shields.io/npm/dm/doctrine.svg?style=flat-square)](https://www.npmjs.com/package/doctrine) [![Join the chat at https://gitter.im/eslint/doctrine](https://badges.gitter.im/Join%20Chat.svg)](https://gitter.im/eslint/doctrine?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)

# 学说

教义是一种 [JSDoc](http://usejsdoc.org/) 解析来自JavaScript的文档注释的解析器（需要传入注释，而不是整个JavaScript文件）。

## 安装

您可以使用 [npm](https://npmjs.com/)：

```
$ npm install doctrine --save-dev
```

原则也可以用在网页浏览器中使用 [Browserify](http://browserify.org/)。

## 用法

JavaScript中的Require原则：

```js
var doctrine = require("doctrine");
```

### parse ()

主要方法是 `parse()`，它接受两个参数：要解析的JSDoc注释和可选的options对象。可用的选项有：

-   `unwrap` -设置为 `true` 删除前导 `/**`，任何 `*` 这是一行的开头，后面跟着一行 `*/` 从源文本。默认值: `false`。
-   `tags` -要返回的标记数组。指定时，Doctrine只返回此数组中的标记。例如，如果 `tags` 是 `["param"]`那么，只有 `@param` 标签将被退回。默认值: `null`。
-   `recoverable` -设置为 `true` 即使出现语法错误也要继续进行解析。默认值: `false`。
-   `sloppy` -设置为 `true` 允许在括号中指定可选参数(`@param {string} [foo]`）. 默认值: `false`。
-   `lineNumbers` -设置为 `true` 添加 `lineNumber` 到每个节点，指定在源中找到该节点的行。默认值: `false`。
-   `range` -设置为 `true` 添加 `range` 到每个节点，在原始注释中指定节点的开始和结束索引。默认值: `false`。

这里有一个简单的例子：

```js
var ast = doctrine.parse(
    [
        "/**",
        " * This function comment is parsed by doctrine",
        " * @param {{ok:String}} userName",
        "*/"
    ].join('\n'), { unwrap: true });
```

这个例子返回以下AST：

```
{
    "description": "This function comment is parsed by doctrine",
    "tags": [
        {
            "title": "param",
            "description": null,
            "type": {
                "type": "RecordType",
                "fields": [
                    {
                        "type": "FieldType",
                        "key": "ok",
                        "value": {
                            "type": "NameExpression",
                            "name": "String"
                        }
                    }
                ]
            },
            "name": "userName"
        }
    ]
}
```

看到 [演示页面](http://eslint.org/doctrine/demo/) 更多细节。

## 团队

这些人保持着项目的进展，是帮助的资源：

-   尼古拉斯·c·扎卡斯([@nzakas](https://github.com/nzakas)) -项目主管
-   铃木佑介([@constellation](https://github.com/constellation)) -审稿人

## 贡献

问题和pull请求将被分类并尽快做出回应。我们在 [ESLint贡献者指南](http://eslint.org/docs/developer-guide/contributing),所以请务必在投稿前阅读它们。如果您不确定在哪里挖掘，请查看 [问题](https://github.com/eslint/doctrine/issues)。

## 常见问题

### 我可以将整个JavaScript文件传递给Doctrine吗？

否。Doctrine只能解析JSDoc注释，因此您只需要将JSDoc注释传递给Doctrine就可以工作了。

### 许可证

#### 学说

JS基金会及其他贡献者版权所有， [https://js.foundation](https://js.foundation/)

根据Apache许可证2.0版（“许可证”）进行许可； 除非遵守许可，否则您不得使用此文件。 您可以从以下网址获得许可证的副本

```
http://www.apache.org/licenses/LICENSE-2.0
```

除非适用法律要求或书面同意，软件 在本许可项下分发的是按“现状”分发的， 不作任何明示或暗示的保证或条件。 有关管理权限的特定语言，请参阅许可证 许可证下的限制。

#### esprima

有些函数是由esprima派生的

版权所有(C) 2012, 2011 [Ariya希](http://ariya.ofilabs.com/about) (推特: [@ariyahidayat](http://twitter.com/ariyahidayat))和其他贡献者。

重新分发和使用的源代码和二进制形式，有或没有 在满足下列条件的情况下，允许进行修改：

-   重新发布源代码必须保留上述版权 注意，此条件列表和以下免责声明。
    
-   以二进制形式重新发布必须复制上述版权 注意，本条件列表和以下免责声明中的 随发行版提供的文件和/或其他材料。
    

本软件由版权所有者和贡献者“按原样”提供。 以及任何明示或暗示的保证，包括但不限于 对适销性和适合某一特定目的的默示保证 是否认。在任何情况下，我都不承担任何责任 直接的、间接的、偶然的、特殊的、惩戒性的或后果性的损害 (包括但不限于，替代商品或服务的采购； 损失：失去使用、数据或利润；或业务中断)，无论如何引起和 在任何责任理论中，无论是合同责任、严格责任还是侵权责任 （包括疏忽或其他）因使用 本软件即使被告知有这种损害的可能性。

#### closure-compiler

一些扩展派生自闭包编译器

Apache许可 版本2.0,2004年1月 [http://www.apache.org/licenses/](http://www.apache.org/licenses/)

### 去哪里寻求帮助？

加入我们的 [聊天室](https://gitter.im/eslint/doctrine)

## 常见问题

### doctrine 是什么？

JSDoc解析器

### 如何安装 doctrine？

在项目目录运行 npm install doctrine，或使用 pnpm add / yarn add / bun add。

### doctrine 支持 TypeScript 吗？

该包的 package\.json 没有声明类型入口。需要类型提示时，可以在 npm 上查找社区维护的 @types/doctrine 是否存在。

### doctrine 支持 ESM 还是 CommonJS？

以 CommonJS 形式发布，可以直接 require\(\)；在 ES Module 项目中也可以用 import 引入（Node\.js 会把 module\.exports 作为默认导出）。

### doctrine 需要什么版本的 Node\.js？

package\.json 的 engines 字段要求 Node\.js \>=6\.0\.0。版本不符时 npm 默认只给出警告，开启 engine-strict 后会拒绝安装。

### doctrine 可以商用吗？

doctrine 使用 Apache-2\.0 许可。宽松许可：允许商业使用、修改和再分发，并附带明确的专利授权；分发时需保留许可与 NOTICE 文件，修改过的文件要注明改动。以上为概括，不构成法律意见，请以许可原文为准。

### doctrine 的下载量有多少？

根据 npm 官方下载统计，doctrine 在 2026/10/05 – 2026/11/03 这 30 天内被下载 506,804,142 次，日均约 16,893,471 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入，适合横向比较热度，不能直接等同于使用人数。

### doctrine 还在维护吗？

最新版本 3\.0\.0 发布于 2018/11/10（7 年前）；至今共发布 34 个版本，其中过去 12 个月发布了 0 个；首次发布于 2012/05/11。发布频率只是参考信号：功能稳定的工具可能很少需要更新，建议结合源码仓库的 issue 和提交记录判断。

