gpt4 book ai didi

node.js - 如何扫描代码是否有弃用或更糟的情况

转载 作者:太空宇宙 更新时间:2023-11-04 01:46:58 26 4
gpt4 key购买 nike

我们有这个“旧”模块 (A),它仍然使用 Promise.defer() 并使用 Node v6 构建。该模块由不同的模块 (B) 使用,甚至由使用 Node v8 构建的另一个模块 (C) 使用。

只有在某些代码路径中才会真正调用 defer,因此这确实是一个棘手的运行时问题。

理想情况下,npm install 只会通知我我们正在使用过时的代码(来自模块 C 或 B),但显然它不会那样工作。可以在 package.json(在模块 A 中)中指定引擎应该是 Node v6 并发布新版本,但这对于使用旧版本的当前模块(B 和 C)没有帮助。

有没有办法递归扫描这种事情?是的,我可以执行 npm install,然后对这个特定的 Promise.defer 进行一些递归 grep,但我想知道是否有任何通用工具用于已弃用或过时的代码。我尝试用谷歌搜索没有成功。

编辑:

使用 npm-check (在下面和评论中建议),我可以获得有关哪些软件包有更新、未使用等的报告。有点类似depcheck ,但是 npm-check 看起来更高级。

它们都无法检测到与 Node 8 捆绑的 V8 (v5.4) 未附带 Promise.defer(this commit 取消该功能)。

最佳答案

正如评论中所述, 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)方法。

关于node.js - 如何扫描代码是否有弃用或更糟的情况,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51096690/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com