【问题标题】:Are there npm version prerelease identifiers?是否有 npm 版本预发布标识符?
【发布时间】:2017-11-17 22:02:39
【问题描述】:

有一个非常方便的npm version 命令。除了majorminorpatch 等参数,它还接受prereleaseprepatch 等参数。
它在文档中说这些命令根据semver.inc 函数工作。

我对这些pre 命令有疑问。

假设我目前的版本是v1.0.0
如果我运行npm version prerelease,它会将版本提升到v1.0.1-0

是否可以根据https://github.com/npm/node-semver#prerelease-identifiers为预发布标识符提供额外的agrument?

我希望像 npm version prerelease alpha 这样的东西能将版本升级到 v1.0.1-alpha.0,但这不起作用。

【问题讨论】:

  • 您找到解决方案了吗?
  • 很遗憾,还没有。
  • 我也在寻找这样的东西。现在我只写出整个版本,比如npm version 1.0.1-alpha.0,这比手动编辑 package.json 和标记提交要容易一些。
  • 尝试使用--preid alpha 进行预发布,如果我对this doc 的理解正确,那应该会产生您想要的结果。
  • @MondKin 嗯,按时间顺序是相反的 :)

标签: npm versioning semantic-versioning npm-cli


【解决方案1】:

我最近一直在看这个,看看是否有任何关于此事的更新......但似乎事情还是一样。

不,npm version 命令不支持 npm 版本预发布标识符。你可以在这里看到团队的推理: https://github.com/npm/npm/pull/12936#issuecomment-248153743

semver (https://www.npmjs.com/package/semver) 确实支持你正在尝试做的事情,所以你可以做的是使用这样的命令获取版本:

semver <current version> -i prerelease --preid <prelease identifier>

例如:

semver 1.0.1 -i prerelease --preid alpha

将产生:

1.0.2-alpha.0

有了这个结果,您可以将它传递给 npm 版本(例如在 CI 构建中),如下所示:

npm version <resulting version from semver command>

另一种选择是使用语义发布(一个独立的项目): https://github.com/semantic-release/semantic-release

这将基于提交消息自动进行语义版本控制,但我认为它仅适用于 github repo 托管模块,对此不确定。

【讨论】:

    【解决方案2】:

    就像提到的其他答案一样,由于comment中提到的原因,这不受 npm 支持

    但是您可以使用 semver 包和 npm 脚本通过 在package.json

    中添加类似以下内容
    "scripts": {
      "beta-version-patch": "npm version $(semver $npm_package_version -i prerelease --preid beta)",
      "beta-version-minor": "npm version $(semver $npm_package_version -i preminor --preid beta)",
      "beta-version-major": "npm version $(semver $npm_package_version -i premajor --preid beta)",
      "rc-version": "npm version $(semver $npm_package_version -i prerelease --preid rc)",
      "final-release": "npm version $(semver $npm_package_version -i)"
    }
    

    然后运行npm run beta-version-patch

    为了更通用,您可以使用以下内容:

    "scripts": {
      "semver": "npm version $(semver $npm_package_version -i $release --preid $preid)"
    }
    

    并运行如下命令:

    release=prerelease preid=alpha npm run semver
    release=prerelease preid=beta npm run semver
    release=premajor preid=alpha npm run semver
    

    【讨论】:

      【解决方案3】:

      npm 6.4.0 开始,您可以像这样使用npm version--preid 选项:

      $ npm version prerelease --preid=alpha
      v0.1.1-alpha.0
      $ npm version prerelease --preid=alpha
      v0.1.1-alpha.1
      $ npm version prerelease --preid=alpha
      v0.1.1-alpha.2
      

      【讨论】:

        猜你喜欢
        • 2013-12-15
        • 2016-01-02
        • 2019-01-16
        • 2021-03-03
        • 2013-07-03
        • 1970-01-01
        • 1970-01-01
        • 2012-05-22
        • 1970-01-01
        相关资源
        最近更新 更多