在 package-lock.json 中禁用本地依赖的完整性检查

Disable integrity check for local dependency in package-lock.json

如何禁用包-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-(...)

摘自“包-lock.json”:

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

有什么方法可以禁用本地依赖项的完整性检查吗?

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

要在不引入安全问题的情况下解决此问题,您可以重新安装软件包,这应该会更新 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

我可以通过引用我的库目录而不是 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"