node.js - 检查 package.json 依赖项是否与已安装的依赖项匹配
问题描述
有没有办法检查安装的依赖项是否与/node_modules
中列出的依赖项匹配?package.json
package-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 中列出的依赖项是否与安装的相匹配?
解决方案
尝试使用--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
需要一个。
推荐阅读
- regression - 是否应该从广义线性模型中排除异常值?
- build - 使用自动工具为 MIPS 目标交叉编译 yuma123
- sql - sql pgadmin 困惑
- eclipse - 在eclipse上安装tomcat
- ios - 嵌套 DispatchQueue.main.async
- javascript - 如何获取连续数组元素的总和
- javascript - MathJax 方程包含多个带索引的求和
- angular - Angular Firebase - DocumentReference.set() 错误
- javascript - TS2451:无法重新声明块范围变量
- java - JavaFX:检查是否已设置事件处理程序/过滤器的方法?