检查NPM package.json和package-lock.json是否兼容

检查NPM package.json和package-lock.json是否兼容,npm,dependencies,package.json,package-lock.json,Npm,Dependencies,Package.json,Package Lock.json,有没有办法在不运行npm install的情况下检查package lock.json文件是否与package.json兼容?兼容意味着指定的package.json版本可以通过package lock.json实现 当前方法 我目前正在通过运行npm install并检查package lock.json是否更改为: git克隆https://github.com/my/codebase cd代码基 npm安装 if[[git diff index--quiet HEAD--package-l

有没有办法在不运行
npm install
的情况下检查
package lock.json
文件是否与
package.json
兼容?兼容意味着指定的
package.json
版本可以通过
package lock.json
实现

当前方法

我目前正在通过运行
npm install
并检查
package lock.json
是否更改为:

git克隆https://github.com/my/codebase
cd代码基
npm安装
if[[git diff index--quiet HEAD--package-lock.json]];然后
echo'错误:npm安装更改的包锁.json'
fi
用例


我想在持续集成中添加一个测试,以确保如果开发人员修改了
package.json
,他们也会相应地更新
package lock.json
。这一点很重要的原因是我们的持续集成使用了
npm ci
,而不是
npm install
npm-ci
仅引用
package-lock.json
,因此,如果开发人员不更新锁文件,持续集成设置将与他们期望的不匹配。

正如前面提到的评论中所提到的,有
npm-ci
命令,如果
package.json
package lock.json
不同步,则会引发错误

以下是我用来“测试”它们是否处于奇偶校验的内容:

错误=0
npm ci
如果[“$?”-ne 0];然后
echo“依赖项安装失败!”
错误=$($ERRORS+1))
fi

我正在寻找一种更好的方法来实现这一点,因为这实际上会删除整个
node\u modules
目录,确认奇偶校验,然后继续安装锁定版本(如果一切正常),但这需要一些时间,具体取决于软件包的数量。

npm ci
如果package.json和package-lock.json不同步,则会失败,因此您的持续集成已经在测试您的用例。你能提供更多关于开发者设置和CI设置之间差异的信息吗?是的,我验证了版本号。然而,我发现在使用Git修订版时,情况并非如此。复制和详细信息,请访问