首页 > 解决方案 > 检查 package.json 依赖项是否与已安装的依赖项匹配

问题描述

有没有办法检查安装的依赖项是否与/node_modules中列出的依赖项匹配?package.jsonpackage-lock.json

我知道我可以打字npm install更新。但是如何检查是否需要输入npm install.

理想情况下,我想将其添加到我的构建脚本中。你可以想象像

#!/bin/sh
npm install --check-only
if [ $? -eq 0 ]; then
    echo continue with build
else
    echo you need to "npm install" the latest deps
fi

要么使用 npm,要么调用一些官方的 npm API,但我也没有看到。

也许这样的选择隐藏在显而易见的地方,而我只是没有看到它。我确实找到了第 3 方解决方案,但鉴于npm install已经必须这样做才能知道它是否需要安装一些东西,我更喜欢通过官方的方式进行安装,npm这样如果npm更改它的更新标准,我将继续得到相同的结果。

有没有办法检查 package.json/package-long.json 中列出的依赖项是否与安装的相匹配?

标签: node.jsnpm

解决方案


尝试使用--dry-run标志。根据文档man npm-install

--dry-run 参数将以通常的方式报告安装在没有实际安装任何东西的情况下会完成的工作。

您可以运行此命令,检查输出。不幸的是,看起来返回值不会根据是否有任何变化而变化,但您可以解析输出。

如果输出的最后一行如下所示:

up to date in 7.064s

那么你很好,但如果它看起来像:

added 1 package in 7.014s

或者

updated 1 package in 6.019s

然后npm i需要一个。


推荐阅读