@contrast/dep-hooks

中文文档
1.41.1发布于 2026/11/05SEE LICENSE IN LICENSETypeScriptCommonJS近 30 天下载 1.7万

Module.prototype.quire 的后钩

中文使用文档
文档目录5 节
  1. 使用量
  2. .resolve(descriptor, ...handlers)
  3. .install()
  4. .uninstall()
  5. 实例

@contrast/dep-hooks

拦截呼叫 require 用于修改或替换出口.

使用量

@contrast/agentify 将 dep- hooks 刻入核心为 core.depHooks 财务报告和审定财务报表 启动时安装( 它是 depHooks 内 installOrder因此,组件 只有登记处理器 :

core.depHooks.resolve({ name: 'express', version: '>=4' }, (xport, metadata) => {
  // modify xport, or return a replacement
});

这个 DepHooks 类也被导出( c)require('@contrast/dep-hooks').DepHooks(中文(简体) ) 用于剂外. 它的构造器需要 { logger, messages, appInfo }。 。 。 .

.resolve(descriptor, ...handlers)

选项 :

  • descriptor: 这可以是描述您想要的模块的字符串或对象 去拦截 如果使用字符串, 或描述符的版本字段 没有设置,所有版本的描述模块都将匹配。 说明 可以有一个 name, (中文(简体) ), version,以及 file 属性.

  • handlers: 其余的论据是处理者,将在 描述的模块是 require'd. 每个处理器都通过导出 模块和元数据,包括模块的根目录及其名称和 文本可见于 package.json 文档。 如果处理器返回了真相 值,然后该值将取代 require。 。 。 .

说明: 注册处理器运行 一次 每个出口的特例 匹配描述符.

.install()

这个会给猴子包扎的 Module.prototype.require 以便出口 被拦截。 不管多少次 只会有一次 这被引用.

.uninstall()

这将重置 Module.prototype.require 其价值在存在之前 {\fn黑体\fs22\bord1\shad0\3ahbe\4ah00\fscx67\fscy66\2chffffff\3ch808080}猴子被尸体吸过.

实例

使用大小写 : 对于 express 大于或等于4的版本,拦截 导出软件包 lib/view.js 文件(与软件包的基数有关) 目录)和对导出函数应用标记.

core.depHooks.resolve(
  {
    name: 'express',
    version: '>=4',
    file: 'lib/view.js',
  },
  (xport, metadata) => {
    // From the package's package.json:
    // - metadata.name
    // - metadata.version
    // The package's root directory:
    // - metadata.packageDir

    // xport === function View() { /*...*/ }
    xport['I was intercepted'] = true;
  },
);

使用大小写 : 截取所有版本的 body-parser 替换导出 函数.

core.depHooks.resolve({ name: 'body-parser' }, (xport, metadata) => {
  // From the package's package.json:
  // - metadata.name
  // - metadata.version
  // The package's root directory:
  // - metadata.packageDir

  // xport === function bodyParser() { /*...*/ }
  return function bodyParserReplacement() {
    /*...*/
  };
});

版本与发布记录

@contrast/dep-hooks 共发布 65 个版本,首次发布于 2022/06/16;过去 12 个月发布了 20 个版本。

版本发布日期距今
1.41.1latest2026/11/056 天前
1.41.02026/10/3011 天前
1.40.02026/10/2318 天前
1.39.02026/10/1724 天前
1.38.02026/09/261 个月前
1.37.02026/08/192 个月前

关于 @contrast/dep-hooks 的常见问题

@contrast/dep-hooks 是什么?

Module.prototype.quire 的后钩

如何安装 @contrast/dep-hooks?

在项目目录运行 npm install @contrast/dep-hooks,或使用 pnpm add / yarn add / bun add。

@contrast/dep-hooks 支持 TypeScript 吗?

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

@contrast/dep-hooks 支持 ESM 还是 CommonJS?

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

@contrast/dep-hooks 需要什么版本的 Node.js?

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

@contrast/dep-hooks 可以商用吗?

@contrast/dep-hooks 使用 SEE LICENSE IN LICENSE 许可。许可条款写在包内的独立文件中,请阅读该文件确认可否商用。以上为概括,不构成法律意见,请以许可原文为准。

@contrast/dep-hooks 的下载量有多少?

根据 npm 官方下载统计,@contrast/dep-hooks 在 2026/10/11 – 2026/11/09 这 30 天内被下载 17,272 次,日均约 576 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入,适合横向比较热度,不能直接等同于使用人数。

@contrast/dep-hooks 还在维护吗?

最新版本 1.41.1 发布于 2026/11/05(6 天前);至今共发布 65 个版本,其中过去 12 个月发布了 20 个;首次发布于 2022/06/16。发布频率只是参考信号:功能稳定的工具可能很少需要更新,建议结合源码仓库的 issue 和提交记录判断。