【问题标题】:Disable integrity check for local dependency in package-lock.json禁用 package-lock.json 中本地依赖项的完整性检查
【发布时间】:2021-12-21 12:18:22
【问题描述】:

如何禁用 package-lock.json 中本地依赖项的完整性检查?

在我的存储库中,我有一个基础库以及两个 Angular 应用程序,它们都使用我的基础库作为依赖项。

不幸的是,基础库的完整性 sha512 与每个构建不同,并且 npm 无法安装依赖项。

这是它的输出:

npm ERR! code EINTEGRITY
npm ERR! Verification failed while extracting @me/base-library@file:../lib/me-base-library-1.0.0.tgz:
npm ERR! Verification failed while extracting @me/base-library@file:../lib/me-base-library-1.0.0.tgz:
npm ERR! Integrity check failed:
npm ERR!   Wanted: sha512-(...)
npm ERR!    Found: sha512-(...)

摘自“package-lock.json”:

"@me/base-library": {
  "version": "file:../lib/me-base-library-1.0.0.tgz",
  "integrity": "sha512-(...)" // <- different with every build
}

有没有办法禁用对本地依赖项的完整性检查?

【问题讨论】:

  • 为什么每个版本都不一样?
  • 哦,因为是本地构建的文件,当然

标签: javascript node.js angular npm npm-install


【解决方案1】:

我可以通过引用我的库目录而不是 TGZ 文件来解决此问题。 npm 和 yarn(均经过测试)不会为文件夹生成完整性哈希,仅针对文件。在我的 Angular 应用程序的 package.json 文件中,我刚刚将 "@me/base-library": "file:../lib/me-base-library-1.0.0.tgz" 更改为 "@me/base-library": "file:../lib"

另外,我必须在基础库的package.json 文件中添加一些属性:

  "main": "lib/bundles/me-base-library.umd.js",
  "module": "lib/fesm2015/me-base-library.js",
  "es2015": "lib/fesm2015/me-base-library.js",
  "esm2015": "lib/esm2015/me-base-library.js",
  "fesm2015": "lib/fesm2015/me-base-library.js",
  "typings": "lib/me-base-library.d.ts"

【讨论】:

    【解决方案2】:

    我不确定是否存在这种可能性——基本上,这将是一个切换安全问题的开关。

    要在不引入安全问题的情况下解决此问题,您可以重新安装软件包,这应该会更新 integrity 的值:

    npm install file:../lib/me-base-library-1.0.0.tgz
    

    要自动执行此操作,您可以创建一个 npm 脚本:

    {
      "scripts": {
        "update-base": "npm install file:../lib/me-base-library-1.0.0.tgz"
      }
    }
    
    npm run update-base
    

    【讨论】:

    • 非常感谢您提出的解决方法。不幸的是,脚本命令中的固定版本会使我们难以在构建服务器上自动安装。在第一次使用 yarn 进行实验后,我们发现 yarn 可以根据需要处理本地依赖项,而无需任何解决方法。所以,我们将从 npm 迁移到 yarn。
    • 很高兴知道!如果您将您的发现作为问题的答案发布,那就太好了
    • 刚刚发布 :) 最后,我什至可以使用 npm。
    猜你喜欢
    • 2019-03-26
    • 2020-01-16
    • 2019-04-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-04-19
    • 2018-12-07
    • 1970-01-01
    相关资源
    最近更新 更多