depd
摒弃所有的东西
模块越大,责任越大;标记已弃用的东西!
安装
本模块直接安装使用 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。
显示

当用户调用库中标记为已弃用的函数时,他们将
将看到以下内容被写入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')