pirates

中文文档
4.0.7发布于 2025/03/27MITTypeScriptCommonJS零依赖近 30 天下载 3.2亿

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

中文使用文档
文档目录7 节
  1. 适当劫持需要
  2. 为什么?
  3. 安装
  4. 使用量
  5. API 密码
  6. 海盗.addHook(hook, [opts={ [macher: true], [exts: ['.js']], […
  7. 使用海盗的项目

海盗 Coverage

适当劫持需要

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

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

为什么?

两个原因:

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

关于某些背景,见 babel 问题线索 开始这一切,然后 尼克问题线索时 我们开始讨论刚刚开发的nyc代码 1号 讨论终于被搬走了.

安装

npm install --save pirates

使用量

利用海盗很容易:

// 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 (默认为真实).

使用海盗的项目

见 维基页面如果你把海盗加入你的计划, (你应该! ) 如果每个人都用它,它最好。 然后我们可以有一个充满快乐的世界 需要钩子,请 加入维基语录.

版本与发布记录

pirates 共发布 20 个版本,首次发布于 2015/12/06;过去 12 个月发布了 0 个版本。

版本发布日期距今
4.0.7latest2025/03/271.6 年前
4.0.62023/06/203 年前
4.0.52022/01/244 年前
4.0.42021/12/084 年前
4.0.32021/12/074 年前
4.0.22021/12/074 年前

关于 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 和提交记录判断。