最近,我尝试用Thread安装我的节点包。它工作得很好,比NPM快得多。纱线自动生成纱线。锁定
。我们已经有了NPM shrinkwrap(NPM shrinkwrap.json
)。
他们之间有什么区别吗?做纱线。锁定
比npm包覆面提取有任何优势。json?
纱线。锁
文件与其他包管理器的锁文件非常相似,尤其是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回购协议上仍然有一大堆明显的漏洞,所以我会等一个月左右。