Npm 是否可以只忽略一个模块(或注册表)的依赖项哈希验证?
Npm 是否可以只忽略一个模块(或注册表)的依赖项哈希验证?,npm,yarnpkg,Npm,Yarnpkg,warn.lock文件保存模块的所有依赖项版本和散列。我知道我可以使用选项——skip integrity check全局禁用此哈希检查 我们有一个不断开发的内部模块。依赖关系实际上是快照包的一部分。当它被更新时,它在我们的持续集成环境中失败,因为更新的包散列与保存的warn.lock散列不同 是否可以仅针对特定模块禁用完整性检查 我会接受这个答案,即使它告诉我如何禁用对特定注册表中所有模块的检查 更新:我的问题是,更新依赖项时,即使代码中没有修改,我的持续集成服务器作业也会中断。这些都是虚假的
warn.lock
文件保存模块的所有依赖项版本和散列。我知道我可以使用选项——skip integrity check
全局禁用此哈希检查
我们有一个不断开发的内部模块。依赖关系实际上是快照包的一部分。当它被更新时,它在我们的持续集成环境中失败,因为更新的包散列与保存的warn.lock散列不同
是否可以仅针对特定模块禁用完整性检查
我会接受这个答案,即使它告诉我如何禁用对特定注册表中所有模块的检查
更新:我的问题是,更新依赖项时,即使代码中没有修改,我的持续集成服务器作业也会中断。这些都是虚假的失败,我想阻止它们
更新2:公认的解决方案实际上是解决常规开发工作流程中问题的一种技巧。有一种方法可以解决这个问题 而不是跑步
yarn install
你应该像下面那样运行它
yarn add <specificpackage>@^<versions> --update-checksums
yarn install
...
"preinstall": "node yarn_remove_hash.js"
...
您将更新package.json中的脚本
部分,如下所示
yarn add <specificpackage>@^<versions> --update-checksums
yarn install
...
"preinstall": "node yarn_remove_hash.js"
...
如果您想让@Tarun Lalwani的--update校验和对您和其他人来说更透明,您可以将以下内容添加到.yarnrc
:
--install.update-checksums true
现在,当用户运行warn install
时,它也会隐式更新校验和。这对我来说是必要的,因为我的一个依赖项链接到一个snapshot.tar.gz,这个snapshot.tar.gz会发生变化,NPM/Thread会认为它不会发生变化,这显然导致了这个完整性问题。因为这个原因,我不得不离开NPM,还尝试了预安装钩子(我认为我很聪明,但我想你们也这么做了)。
至少纱线在这方面有一个选择。Tarun更新的答案对我也不起作用,因为在运行任何挂钩之前,都会对Thread.lock进行检查。您不能运行Thread upgrade
将您的锁文件同步到最新可用的模块快照,而不是禁用完整性检查吗?@mrblewog:我已经更改了问题以使其更清晰。问题是我的持续集成服务器。注意到-我恐怕不知道答案!我希望它停止检查支票金额。这将修复它一次,但是当包被更新时(它是一个正在开发的包),它将再次失败。我想防止每次都需要更新哈希和,这样我的持续集成就不会失败。CI是否签出包并始终进行新安装?是的,但Thread.lock文件与nexus存储库中的依赖项包不一致。所以它失败了@Tarun Lalwani请加入聊天室我需要单独运行节点Thread\u remove\u hash.js
,因为Thread在运行预安装脚本之前读取了Thread.lock文件。