depd

中文文档
2.0.0发布于 2018/10/27MIT零依赖近 30 天下载 6.2亿

摒弃所有的东西

中文使用文档
文档目录15 节
  1. 安装
  2. API
  3. depd(名称空间)
  4. 反对(消息)
  5. 轻视。函数(fn、消息)
  6. 轻视。属性(obj, prop, message)
  7. 的过程。(“弃用”,fn)
  8. process.env.NO_DEPRECATION
  9. process.env.TRACE_DEPRECATION
  10. 显示
  11. 例子
  12. 弃用对函数的所有调用
  13. 有条件地弃用函数调用
  14. 弃用属性访问
  15. 许可证

depd

NPM Version NPM Downloads Node.js Version Linux Build Windows Build Coverage Status

摒弃所有的东西

模块越大,责任越大;标记已弃用的东西!

安装

本模块直接安装使用 npm:

$ npm install depd

这个模块也可以与系统捆绑在一起 Browserify 或 webpack, 虽然默认情况下,该模块将更改它的API,不再显示或 跟踪的用法。

API

var deprecate = require('depd')('my-module')

此库允许您向用户显示弃用消息。 此库的弃用警告超出了标准 调用堆栈的自省(但仅是它感兴趣的位) 在)。

而不仅仅是在第一次调用deprecated 函数,从此不再调用,此模块将在第一次调用时发出警告 每个唯一调用站点的不赞成的函数,使其成为理想的警报 在整个代码库中使用所有弃用的用户,而不仅仅是 无论发生什么,都先执行。

该模块的弃用警告还包括文件和行 已弃用函数所在模块的调用信息 在。

请注意 类的接口 debug 模块, 该模块使用调用文件获取调用堆栈的边界, 所以你应该总是创建一个新的 deprecate 对象,而不是 在某个中央文件中。

depd(名称空间)

类中给定的名称空间名称创建一个新的deprecate函数 消息,并将在堆栈进入 调用此函数的文件。强烈建议您使用 模块的名称作为命名空间。

反对(消息)

从弃用的代码中调用此函数以显示弃用消息。 此消息将在每个唯一的调用站点上显示一次。呼叫者网站是 首先调用堆栈中与调用者不同的文件中的站点 函数。

如果省略该信息,则根据站点为您生成消息 的 deprecate() 调用并将显示所调用函数的名称, 类似于堆栈跟踪中显示的名称。

轻视。函数(fn、消息)

调用此函数将给定函数包装在任何的弃用消息中 调用函数。可以提供可选消息来提供自定义 消息。

轻视。属性(obj, prop, message)

调用此函数将对象上的给定属性包装在弃用消息中 对该属性的任何访问或设置。可以提供可选消息 来提供自定义消息。

该方法必须在属性所属的对象上调用(而不是 继承自原型)。

如果属性是数据描述符,则将其转换为访问器 描述符,以便显示弃用消息。

的过程。(“弃用”,fn)

此模块将允许通过发出 错误类型为“deprecation” process. 如果没有 对于这种类型的监听器,错误将像往常一样写入STDERR,但是如果 如果有侦听器,则不会向STDERR写入任何内容,而是只写入 发出。从这里,您可以将错误写入另一种格式或到 日志源。

该错误表示弃用,并且只使用相同的方法发出一次 将规则写入STDERR。该错误具有以下属性:

  • message -这是图书馆给的信息
  • name -这总是 'DeprecationError'
  • namespace -这是弃用的命名空间
  • stack -这是调用弃用的东西的堆栈

例子 error.stack 输出:

DeprecationError: my-cool-module deprecated oldfunction
    at Object.<anonymous> ([eval]-wrapper:6:22)
    at Module._compile (module.js:456:26)
    at evalScript (node.js:532:25)
    at startup (node.js:80:7)
    at node.js:902:3

process.env.NO_DEPRECATION

作为已弃用模块的用户,环境变量 NO_DEPRECATION 提供了一个快速的解决方案,以沉默弃用警告是 输出。格式类似于 DEBUG:

$ NO_DEPRECATION=my-module,othermod node app.js

这将抑制“my-module”和“othermod”的弃用输出。 以逗号分隔的名称空间列表。压制每一个警告 在所有名称空间中使用该值 * 对于名称空间。

提供论证 --no-deprecation 到 node 可执行文件将抑制 所有弃用(仅在Node.js 0.8或更高版本中可用)。

请注意 这不会抑制对任何“弃用”的弃用。 事件监听器,只是输出到STDERR。

process.env.TRACE_DEPRECATION

作为已弃用模块的用户,环境变量 TRACE_DEPRECATION 作为一种解决方案来获得更详细的位置信息 通过包括整个堆栈跟踪来警告。格式与 NO_DEPRECATION:

$ TRACE_DEPRECATION=my-module,othermod node app.js

这将包括为“my-module”和 “othermod”。以逗号分隔的名称空间列表。追踪每一个 警告所有名称空间,使用该值 * 对于名称空间。

提供论证 --trace-deprecation 到 node 可执行程序跟踪 所有弃用(仅在Node.js 0.8或更高版本中可用)。

请注意 这将不会追踪到被沉默的诅咒 NO_DEPRECATION。

显示

message

当用户调用库中标记为已弃用的函数时,他们将 将看到以下内容被写入STDERR(以给定的颜色,相似的颜色? 和布局 debug 模块):

bright cyan    bright yellow
|              |          reset       cyan
|              |          |           |
▼              ▼          ▼           ▼
my-cool-module deprecated oldfunction [eval]-wrapper:6:22
▲              ▲          ▲           ▲
|              |          |           |
namespace      |          |           location of mycoolmod.oldfunction() call
               |          deprecation message
               the word "deprecated"

如果用户将他们的STDERR重定向到不支持的文件或其他地方 颜色,他们看到(类似的布局) debug 模块):

Sun, 15 Jun 2014 05:21:37 GMT my-cool-module deprecated oldfunction at [eval]-wrapper:6:22
▲                             ▲              ▲          ▲              ▲
|                             |              |          |              |
timestamp of message          namespace      |          |             location of mycoolmod.oldfunction() call
                                             |          deprecation message
                                             the word "deprecated"

例子

弃用对函数的所有调用

这将显示一条关于“oldfunction”已被弃用的消息 从STDERR上的“my-module”。

var deprecate = require('depd')('my-cool-module')

// message automatically derived from function name
// Object.oldfunction
exports.oldfunction = deprecate.function(function oldfunction () {
  // all calls to function are deprecated
})

// specific message
exports.oldfunction = deprecate.function(function () {
  // all calls to function are deprecated
}, 'oldfunction')

有条件地弃用函数调用

这将显示一个关于“weirdfunction”被弃用的消息 从STDERR上的“my-module”调用少于2个参数。

var deprecate = require('depd')('my-cool-module')

exports.weirdfunction = function () {
  if (arguments.length < 2) {
    // calls with 0 or 1 args are deprecated
    deprecate('weirdfunction args < 2')
  }
}

当调用 deprecate 作为一个函数,警告是根据每个调用站点计数的 在您自己的模块中,因此您可以显示不同的弃用 在不同的情况下,用户仍然会得到所有的警告:

var deprecate = require('depd')('my-cool-module')

exports.weirdfunction = function () {
  if (arguments.length < 2) {
    // calls with 0 or 1 args are deprecated
    deprecate('weirdfunction args < 2')
  } else if (typeof arguments[0] !== 'string') {
    // calls with non-string first argument are deprecated
    deprecate('weirdfunction non-string first arg')
  }
}

弃用属性访问

这将显示一条关于“oldprop”被弃用的消息 从STDERR上的“my-module”访问。将显示弃用 当设置值和获取值时。

var deprecate = require('depd')('my-cool-module')

exports.oldprop = 'something'

// message automatically derives from property name
deprecate.property(exports, 'oldprop')

// explicit message
deprecate.property(exports, 'oldprop', 'oldprop >= 0.10')

许可证

麻省理工学院

版本与发布记录

depd 共发布 17 个版本,首次发布于 2014/06/15;过去 12 个月发布了 0 个版本。

版本发布日期距今
2.0.0latest2018/10/278 年前
1.1.22018/01/128 年前
1.1.12017/07/289 年前
1.1.02015/09/1411 年前
1.0.12015/04/0811 年前
1.0.02014/09/1812 年前

关于 depd 的常见问题

depd 是什么?

摒弃所有的东西

如何安装 depd?

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

depd 支持 TypeScript 吗?

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

depd 需要什么版本的 Node.js?

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

depd 可以商用吗?

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

depd 的下载量有多少?

根据 npm 官方下载统计,depd 在 2026/10/04 – 2026/11/02 这 30 天内被下载 621,719,728 次,日均约 20,723,991 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入,适合横向比较热度,不能直接等同于使用人数。

depd 还在维护吗?

最新版本 2.0.0 发布于 2018/10/27(8 年前);至今共发布 17 个版本,其中过去 12 个月发布了 0 个;首次发布于 2014/06/15。发布频率只是参考信号:功能稳定的工具可能很少需要更新,建议结合源码仓库的 issue 和提交记录判断。