Lodash是否捆绑/包含Underscore?

3
据我所知,JavaScript库lodash的灵感来自于underscore.js,并实现了类似的API。根据维基百科的说法,它是underscore.js的一个分支。
在我的应用中,我使用最新版本的Lodash(4.17.21)。我使用的一些安全软件指出,这个版本的Lodash捆绑了一个包含安全问题的旧版本的underscore.js。
在GitHub上,我可以在Lodash repo的以下子文件夹中找到Underscore.js的旧版本: https://github.com/lodash/lodash/tree/4.17/vendor/underscore 我已经grep了源代码,并且我认为Lodash仅将underscore.js捆绑为引用和某种测试。当我查看Lodash / Underscore实现的特定函数时,实现完全不同。
是否有人知道为什么Lodash github账户也包括Underscore的副本?

顺便提一下,以前有一个与下划线兼容的lodash版本(https://dev59.com/EGQm5IYBdhLWcg3w8Sre)。不确定是否相关,但分享一下。 - jarmod
1个回答

6

完全公开透露:我目前正在维护Underscore。

您的推断是正确的,Lodash并不依赖于Underscore,至少在生产中不依赖。相反,它是从原始库分叉出来并随着时间的推移发生了非常大的变化,以至于您无法再识别原始库。如果您查看Lodash早期提交历史,可以看到作者仍在合并Underscore的更改。这在Underscore 1.3.3之后就停止了。

Lodash与Underscore分歧的一种方式是其源代码膨胀了不少(将未压缩的Lodash(531 kB)未压缩的Underscore(66.8 kB)进行比较)。我认为这部分解释了为什么Lodash现在只发布很少的安全更新;维护范围已经变得太大了。阅读Lodash代码,您还会发现很难跟踪任何给定函数的工作原理。

vendor目录应该在测试和性能比较中使用。您仍然可以在这里这里看到这一点。Underscore 1.8.3已经有七年了,因此这清楚地表明性能测试已经很长时间没有更新了。

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接