gpt4 book ai didi

node.js - 有没有办法确认 package-lock.json 实际上解决了 package.json 中的所有依赖项?

转载 作者:搜寻专家 更新时间:2023-10-31 22:24:35 25 4
gpt4 key购买 nike

我们想向我们的 CI 服务器添加一个自动检查,以防止提交更新 package.json 中的依赖项但不更新 package-lock 中已解析的依赖项的代码.json.

例如,如果有人手动更新了 package.json 中的依赖项,但运行了 npm install 而不是 npm update( npm install 支持 package-lock.json,如果存在的话)。或者,即使有人在更新依赖项时运行了正确的 npm 命令,但随后忘记将生成的更改提交到 package-lock.json,也可能会发生这种情况。我们尝试在代码审查中注意这些事情,但自动检查肯定会更好。是否有执行此操作的任何 npm 命令?

这里有一个例子来说明。

之前:

// package.json
{
"lodash": "~3.1.0"
}

// package-lock.json
{
"dependencies": {
"lodash": {
"version": "3.1.3"
}
}
}

有人更新了 package.json 但忘记将更改提交到 package-lock.json

之后:

// package.json
{
"lodash": "~3.2.0"
}

// package-lock.json (not changed)
{
"dependencies": {
"lodash": {
"version": "3.1.3"
}
}
}

现在 package-lock.json 不再为 package.json 文件反射(reflect)一组有效的依赖项解析。

最佳答案

正在运行 npm ls似乎为你做了这个,因为它会因 package.json 之间的差异而引发错误及其 lock .在 Node 脚本中,您可以使用 Node 的 child_process.exec 执行此操作或 .execSync。如果您想包含有用的消息,异步看起来更干净:

const cp = require("child_process");
const verify = () => cp.exec("npm ls", error => {
if (error) {
console.error("Dependency mismatch between package.json and lock. Run: npm install");
throw error;
}
console.log("Dependencies verified =)");
});

或者为了简单起见,您可以在 npm install 之前在 CI 中的某个时刻运行 npm ls

关于node.js - 有没有办法确认 package-lock.json 实际上解决了 package.json 中的所有依赖项?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45287398/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com