【问题标题】:NPM detect pre-release dependency in package.json/package-lock.json?NPM 检测 package.json/package-lock.json 中的预发布依赖项?
【发布时间】:2020-01-16 23:37:08
【问题描述】:

有没有办法检测 package.json 或 package-lock.json 中的预发布依赖项?

我的上下文是我想创建一个 git "TAG" 来指示我的代码的候选发布版本。 我想确保我所有内部开发的模块不依赖于任何预发布模块。

我想检测我的 package.json 中是否存在预发布依赖项(“^1.0.3-NIGHTLY”),如下例所示:

    "@mydomain/client-mgr-service": "^1.0.3-NIGHTLY",  <= I would like to be able to detect this line if there is a NPM feature out-of-box
    "@types/country-data": "0.0.0",
    "amazon-cognito-identity-js": "^3.0.12",

提前感谢您提供的任何帮助~

【问题讨论】:

  • npm 没有内置任何东西来实现这个 AFAIK。您可以利用 node.js 脚本来解析 package.jsonpackage-lock.json,即JSON.parse(...),并检测是否存在预发布。或者,如果您想检查项目的完整依赖关系树是否有预发布,您可以(从 node.js 脚本)从项目目录中使用npm ls -json 命令,然后使用JSON.parse(...) 结果来检测是否存在预发布。
  • 感谢@RobC。我认为我想要达到的目标对于 CICD 实践来说是非常普通的。只是想知道 ppl 通常如何在他们的项目中避免预发布依赖?或者你能分享你的解决方案吗,我愿意接受任何建议,不一定在 package.json/package-lock.json 上。

标签: npm npm-install package.json


【解决方案1】:

这是一个简单的解决方案,用于检测我的 package.json 中是否存在任何预发布依赖项。这个想法是检查 semver 的 x.y.z 数字之后是否有一个“-”。

grep -P "([0-9]\d*)\.([0-9]\d*)\.([0-9]\d*)-" package.json

【讨论】:

    猜你喜欢
    • 2018-04-19
    • 1970-01-01
    • 2020-01-19
    • 2020-11-19
    • 2019-03-26
    • 2019-05-19
    • 2019-04-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多