【问题标题】:how to workaround npm "Error: Invalid version: "0.1" BUG? [duplicate]如何解决npm“错误:无效版本:“0.1”BUG?[重复]
【发布时间】:2015-04-20 17:29:24
【问题描述】:

我正在尝试构建一个 nodejs 包。当我运行npm install 时,我收到Error: Invalid version: "0.1 消息并且npm 安装失败。

我尝试通过将模块目录中 package.json 文件中的 "version": "0.1", 替换为 "version": "0.0.1", 来手动修复错误,但有许多模块包含无效的 0.1 版本。手动修复非常困难。

有没有更简单的方法来解决它? 或者可能是一个 awk、sed 或其他 bash 脚本,它们递归地搜索 package.json 文件并将 "version": "0.1", 替换为 "version": "0.0.1", 帮助?

编辑:在提问之前,我已经查看了这个线程 npm: Why is a version "0.1" invalid? 和许多其他人

【问题讨论】:

    标签: node.js bash awk sed npm


    【解决方案1】:
    find "dir" -type f -name package.json -print |
    xargs sed -i 's/"version": "0.1"/"version": "0.0.1"/'
    

    应该按照你的描述做。将“dir”替换为您真正的起始目录并首先对其进行测试。

    【讨论】:

    • 你敢打赌,所有这些 JSON 文件的格式都是正确的。
    • 不,脚本只是向 OP 提供他所要求的内容,即an awk, sed or other bash script that search for package.json files recursively and replace "version": "0.1", with "version": "0.0.1"。如果这不是实际需要的,就像这里的所有问答一样,则由 OP 来确定是什么。
    • @EdMorton 您的解决方案有效,但由于不同的错误,我未能构建节点包。所以我将此问题标记为已解决。
    【解决方案2】:

    使用jq:

    jq '.version |= if . == "0.1" then "0.0.1" else . end' package.json
    

    由于jq 的已发布版本中尚不提供就地编辑功能,因此将其与find 结合以处理目录树中的所有package.json 文件需要子shell 将jq 输出重定向到临时文件。例如:

    find . -name package.json -exec bash -c "jq '.version |= if . == \"0.1\" then \"0.0.1\" else . end' {} > {}.new && mv {}.new {}" \;
    

    【讨论】:

    • 感谢您的回答。我试试看。
    猜你喜欢
    • 2013-05-29
    • 2018-02-26
    • 2018-06-16
    • 2022-06-20
    • 2021-05-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多