我们有一个“旧”模块(A),它仍然使用Promise.defer()并由节点v6构建。此模块由一个不同的模块(B)使用,甚至由节点v8构建的另一个模块(C)也使用该模块。
仅在某些代码路径中实际上会调用defer,因此这确实是一个棘手的运行时问题。
理想情况下,npm install会通知我我们正在使用过时的代码(来自模块C或B),但显然,这种方式行不通。可以在package.json(在模块A中)中指定该引擎应为节点v6并发布新版本,但这对于使用旧版本的当前模块(B和C)没有帮助。
有没有一种方法可以递归扫描这种事情?是的,我可以进行npm安装,然后为特定的Promise.defer做一些递归grep,但是我想知道是否有任何通用工具用于弃用或过时的代码。我尝试谷歌搜索无济于事。
编辑:
使用npm-check(在下面和注释中建议),我得到有关哪些软件包有更新,未使用等的报告。有点类似于depcheck,但是npm-check看起来更高级。
他们两个都无法检测到与节点8捆绑在一起的V8(v5.4)没有附带Promise.defer(this commit取消了该功能)。
答案 0 :(得分:0)
如评论中所述, npm-check 软件包是一个很好的解决方案。
安装完成后,只需键入npm-check
即可查看已过期和可更新的内容。
有很多可用的功能,例如npm-check -u
,它提供了一种交互式方法来更新每个软件包。
这是可用选项的完整列表...
Usage
$ npm-check <path> <options>
Path
Where to check. Defaults to current directory. Use -g for checking global modules.
Options
-u, --update Interactive update.
-y, --update-all Uninteractive update. Apply all updates without prompting.
-g, --global Look at global modules.
-s, --skip-unused Skip check for unused packages.
-p, --production Skip devDependencies.
-d, --dev-only Look at devDependencies only (skip dependencies).
-i, --ignore Ignore dependencies based on succeeding glob.
-E, --save-exact Save exact version (x.y.z) instead of caret (^x.y.z) in package.json.
--specials List of depcheck specials to include in check for unused dependencies.
--no-color Force or disable color output.
--no-emoji Remove emoji support. No emoji in default in CI environments.
--debug Show debug output. Throw in a gist when creating issues on github.
Examples
$ npm-check # See what can be updated, what isn't being used.
$ npm-check ../foo # Check another path.
$ npm-check -gu # Update globally installed modules by picking which ones to upgrade.
https://www.npmjs.com/package/npm-check
此外(由于我不确定100%是否确定您的要求)...
如果需要找出特定软件包的依赖性,可以使用npm la <package-name>
或npm ll <package-name>
。
这将基于软件包的依赖关系提供一个logical dependency tree。
当然,与任何折旧的支持一样,Promise.defer()
只需手动更新为new Promise(resolve, reject)
方法。
答案 1 :(得分:0)
您可以参加npm-outdated
由npm-cli提供
npm outdated [[<@scope>/]<pkg> ...]
此命令将检查注册表以查看当前是否已安装任何(或特定的)已安装软件包
在输出中:
一个例子
$ npm outdated
Package Current Wanted Latest Location
glob 5.0.15 5.0.15 6.0.1 test-outdated-output
nothingness 0.0.3 git git test-outdated-output
npm 3.5.1 3.5.2 3.5.1 test-outdated-output
local-dev 0.0.3 linked linked test-outdated-output
once 1.3.2 1.3.3 1.3.3 test-outdated-output
具有以下依赖性:
{
"glob": "^5.0.15",
"nothingness": "github:othiym23/nothingness#master",
"npm": "^3.5.1",
"once": "^1.3.1"
}