# pirates 中文文档

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

版本：4\.0\.7
npm 元数据更新时间：2025-03-27T11:21:58.651Z
中文译文更新时间：2026-11-05T15:36:11.031Z
软件包许可：MIT

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

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

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

- 包体积（解压后）：12.6 kB，5 个文件
- 模块格式：CommonJS
- TypeScript 类型：包内自带
- Node.js 要求：\>= 6
- 运行依赖：0 个
- 首次发布：2015-12-05T21:45:41.566Z
- 最新版本发布：2025-03-27T11:21:58.481Z
- 近 30 天下载量：321745730（2026-10-05 至 2026-11-03，npm 官方下载统计）
- 已发布版本数：20（近 12 个月 0 个）

## 中文简介

适当劫持需要,即适当定义需要钩和定制

## 安装

```sh
npm install pirates
```

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

## README

# 海盗 [![Coverage](https://img.shields.io/codecov/c/github/danez/pirates/master.svg?style=flat "codecov")](https://codecov.io/gh/danez/pirates "codecov")

### 适当劫持需要

这个库允许添加自定义需要的钩子,不会干扰其他需要的钩子.

这个图书馆只与普通JS合作.

## 为什么?

两个原因:

1.  Babel和Istanbul在互相残杀.
2.  每个人似乎都重新发明了这个车轮, 每个人都想有一个解决办法 是DRY,简单,容易使用, 和做一切 Just WorkTM, 同时允许多个需要钩, 类似呼叫的方式 `super`。 。 。 .

关于某些背景,见 [babel 问题线索](https://github.com/babel/babel/pull/3062 "Babel Issue Thread") 开始这一切,然后 [尼克问题线索](https://github.com/bcoe/nyc/issues/70 "NYC Issue Thread")时 我们开始讨论刚刚开发的nyc代码 [1号](https://github.com/danez/pirates/issues/1 "Issue #1") 讨论终于被搬走了.

## 安装

```
npm install --save pirates
```

## 使用量

利用海盗很容易:

```javascript
// my-module/register.js
const addHook = require('pirates').addHook;
// Or if you use ES modules
// import { addHook } from 'pirates';

function matcher(filename) {
  // Here, you can inspect the filename to determine if it should be hooked or
  // not. Just return a truthy/falsey. Files in node_modules are automatically ignored,
  // unless otherwise specified in options (see below).

  // TODO: Implement your logic here
  return true;
}

const revert = addHook(
  (code, filename) => code.replace('@@foo', 'console.log(\'foo\');'),
  { exts: ['.js'], matcher }
);

// And later, if you want to un-hook require, you can just do:
revert();
```

## API 密码

### 海盗.addHook(hook, \[opts={ \[macher: true\], \[exts: \['.js'\]\], \[ignoreNodeModules: true\]\];

添加需要的钩. `hook` 必须是需要 `(code, filename)`,并返回修改后的代码. `opts` 实值 选项对象。 可用的选项有: `matcher`,这是一个接受文件名的函数,以及 返回一个真实值,如果文件被锁定(默认为总是返回真实的函数),如果是虚假 否则; `exts`,这是钩线的扩展数组,它们应该从 `.` (违约) `['.js']`(三); `ignoreNodeModules`如果真实, 任何文件 `node_modules` 文件夹不会被锁定( 匹配者也不会被调用) , 如果错误, 那么匹配者会被调用任何文件 `node_modules` (默认为真实).

## 使用海盗的项目

见 [维基页面](https://github.com/danez/pirates/wiki/Projects-using-Pirates)如果你把海盗加入你的计划, (你应该! ) 如果每个人都用它,它最好。 然后我们可以有一个充满快乐的世界 需要钩子,请 加入维基语录.

## 常见问题

### pirates 是什么？

适当劫持需要,即适当定义需要钩和定制

### 如何安装 pirates？

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

### pirates 支持 TypeScript 吗？

支持。包内自带 TypeScript 类型声明（package\.json 声明了 types 入口），安装后即可获得类型提示，无需再安装 @types 包。

### pirates 支持 ESM 还是 CommonJS？

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

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

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

### pirates 可以商用吗？

pirates 使用 MIT 许可。宽松许可：允许商业使用、修改和再分发，通常只需在分发时保留原版权与许可声明。以上为概括，不构成法律意见，请以许可原文为准。

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

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

### pirates 还在维护吗？

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

