Lodash bundle/include 有下划线吗?

Does Lodash bundle/include Underscore?

据我了解,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 的副本?

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

您正确地推断出 Lodash 不依赖于 Underscore,至少在生产环境中不依赖。相反,它是 Underscore 的一个分支,随着时间的推移已经在很大程度上偏离了原始库,以至于您不再认识原始库。如果您查看 early commit history of Lodash,您会发现作者仍在合并来自 Underscore 的更改。这在 Underscore 1.3.3 之后停止了。

Lodash 与 Underscore 的区别之一是其源代码急剧膨胀(比较 unminified Lodash (531 kB) to unminified Underscore (66.8 kB))。我认为这部分解释了为什么 Lodash 现在只发布罕见的安全更新;维护面变得太大。阅读 Lodash 代码,您还会发现很难追踪任何给定函数的工作原理。

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

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