Lodash 是否捆绑/包含 Underscore?

Nit*_*amk 3 javascript underscore.js lodash

据我了解,JavaScript 库 lodash 受到 underscore.js 的启发,并实现了类似的 API。根据维基百科,它是 underscore.js 的一个分支。

在我的应用程序中,我使用最新版本的 Lodash (4.17.21)。我使用的一些安全软件标记出此版本的 Lodash 捆绑了旧版本的 underscore.js,其中包含安全问题。

在 GitHub 中,我可以在 Lodash 存储库的以下子文件夹中找到旧版本的 Underscore.js: https: //github.com/lodash/lodash/tree/4.17/vendor/underscore

我已经 grep 了源代码,我的印象是 Lodash 捆绑 underscore.js 只是作为参考和某种测试。当我查看 Lodash/Underscore 实现的特定函数时,发现它们的实现是完全独立的。

有谁知道为什么 Lodash github 帐户还包含 Underscore 的副本吗?

Jul*_*ian 6

全面披露:我目前正在维护 Underscore。

您正确地推断出 Lodash 不依赖于 Underscore,至少在生产中不依赖。相反,它是 Underscore 的一个分支,随着时间的推移,它已经在很大程度上偏离了原始库,以至于你不再能够识别原始库。如果您查看Lodash 的早期提交历史,您可以看到作者仍在合并 Underscore 的更改。这在 Underscore 1.3.3 之后停止了。

Lodash 与 Underscore 的区别之一是它的源代码急剧膨胀(将未缩小的 Lodash (531 kB)未缩小的 Underscore (66.8 kB)进行比较)。我认为这部分解释了为什么 Lodash 如今只发布罕见的安全更新;维护面变得太大。阅读 Lodash 代码,您还会发现跟踪任何给定函数的工作原理非常困难。

供应商目录应该用于测试和性能比较。你仍然可以在这里这里看到这种痕迹。Underscore 1.8.3 已经有七年历史了,这清楚地表明性能测试已经很长时间没有更新了。

无论如何,您的安全扫描软件都过于谨慎了。Lodash 最初基于 Underscore,但并不依赖于它。