2

有时人们改变package.json并忘记运行npm i哪个会更新package-lock.json,或者package.jsonpackage-lock.json同步。这是一个不在这里讨论/质疑的假设。我正在寻找一种有助于检测此类情况的工具。

您知道可以进行完整性检查的 npm 功能或第三方工具package-lock.json吗?例如,它应该解析所有传递依赖,并检查它们是否都在锁定文件中提及,并且版本在正确的 semver 范围内。npm i它应该告诉运行以更新您的锁定文件是否有意义,或者是否npm ci会为您提供package.json(考虑传递性)中定义的所有依赖项。

我认为这npm --loglevel verbose install --dry-run将是一个合理的候选者,但它的输出没有提到如果它package-lock.json在没有--dry-run. 当然,一种选择是运行npm i然后git diff package-lock.json(或类似),但这很脏。

4

1 回答 1

2

npm ls --depth 1做这些检查:

例如,这是输出:

+-- UNMET DEPENDENCY fastify@^2.0.0
+-- foo@0.0.7 extraneous
`-- got@10.3.0
  +-- @sindresorhus/is@1.2.0
  +-- @szmarczak/http-timer@4.0.0
  +-- @types/cacheable-request@6.0.1
  +-- cacheable-lookup@0.2.2
  +-- cacheable-request@7.0.1
  +-- decompress-response@5.0.0
  +-- duplexer3@0.1.4
  +-- get-stream@5.1.0
  +-- lowercase-keys@2.0.0
  +-- mimic-response@2.0.0
  +-- p-cancelable@2.0.0
  +-- responselike@2.0.0
  +-- to-readable-stream@2.1.0
  `-- type-fest@0.9.0

npm ERR! missing: fastify@^2.0.0, required by asd@1.0.0
npm ERR! extraneous: foo@0.0.7

我得到这个:

npm init --yes
npm i got
npm i foo
// removed foo manually from package json
// added fastify manually to package json
于 2020-01-28T11:13:13.177 回答