提问者:小点点

纱线之间的区别是什么。锁和npm的收缩膜?


最近,我尝试用Thread安装我的节点包。它工作得很好,比NPM快得多。纱线自动生成纱线。锁定。我们已经有了NPM shrinkwrap(NPM shrinkwrap.json)。

他们之间有什么区别吗?做纱线。锁定比npm包覆面提取有任何优势。json?


共2个答案

匿名用户

纱线。锁文件与其他包管理器的锁文件非常相似,尤其是Rust的Cargo package manager,它具有货物。锁定。这些锁文件的思想是表示一组应该始终工作的一致的包。

npm包中存储依赖范围。json文件,这意味着当有人安装您的软件包时,他们可能会获得一组不同的依赖项,因为您可能正在运行过时的软件包(尽管它们仍然满足您指定的依赖项范围)。例如,有人指定了依赖项“foo”:“^1.0.0”。他们可能已经安装了foo v1。0.1,因为这是他们运行npm install时的最新版本,但后来,有人安装了您的包并获得了依赖项foo v1。1.0. 这可能会意外地破坏某些东西,如果您有纱线,这是可以避免的。锁定文件,确保一致的包解析。

至于与npm shirinkpack的比较,留档解释得很清楚:

它类似于npm的npm-shrinkwrap.json,但是它没有损耗,并且可以产生可复制的结果。

该文档还建议提交纱线。如果您还没有这样做,请将锁定到您的存储库,这样您就可以获得一致且可复制的包解析的好处。这个问题还进一步解释了为什么要这样做。

npm收缩包装的有损行为是由于npm本身使用的非确定性算法造成的;如另一个答案的评论所述,npm收缩包装

匿名用户

他们之间有什么区别吗

与npm收缩包装相比,纱线采用更具确定性的算法。如果您正在使用纱线,继续使用收缩膜将违反直觉

您可以在纱线的文档中找到这一点。锁

它类似于npm的npm-shrinkwrap.json,但是它没有损耗,并且可以产生可复制的结果

然而,问题仍然是纱线是否已准备好生产。GitHub回购协议上仍然有一大堆明显的漏洞,所以我会等一个月左右。