【问题标题】:npm version to add alpha postfixnpm 版本添加 alpha 后缀
【发布时间】:2017-01-05 11:23:46
【问题描述】:

我怎样才能将package.json 版本添加到包含-alpha使用 npm 版本控制。

运行npm version <new version> 会增加package.json 文件的版本,但是我想在版本中添加-alpha 后缀,但我无法这样做,因为文档中没有说明,但它由 semver 支持自己。

实际结果:

> npm version prerelease
> v0.2.1-1

预期结果:

> v0.2.1-alpha

【问题讨论】:

  • 正是我的问题!手指交叉寻求答案:)
  • @DaveKerr 我在 npm 上提交了一个拉取请求,github.com/npm/npm/pull/13794
  • 这方面的最新消息是什么?我有这个问题 - stackoverflow.com/questions/50846170/…
  • 您不应该只编辑 package.json 文件中的版本字段吗?尝试在预发布命令修饰符后添加“-alpha”?
  • @jwdonahue 可能有用,但 IMO npm 应该提供此功能,因为它是 semver 规范的一部分。

标签: node.js npm semantic-versioning


【解决方案1】:

你不能自动设置0.2.1-alpha,但是0.2.1-alpha.0是可以的。

npm 支持--preid 选项来指定预发布的前缀。它可以与pre* 版本结合使用。

示例 1. 制作下一个主要版本的 alpha:

# 1.2.3 => 2.0.0-alpha.0
npm version premajor --preid alpha

示例 2. 将 alpha 转换为 beta:

# 2.0.0-alpha.0 => 2.0.0-beta.0
npm version prerelease --preid beta

创建预发布后,您可以使用 prerelease 参数增加数字。

# 2.0.0-beta.0 => 2.0.0-beta.1
npm version prerelease

【讨论】:

    【解决方案2】:

    虽然 -alpha 和 -beta 是常见的预发布标签,但它们不是由 SemVer 定义的。 -alpha.1、-alpha.2、-beta.1 等也相当常见。该规范将预发布标签定义为一系列点分隔的字母数字或数字字符字段。 SemVer 规范在某些示例中使用了 alpha 和 beta,但规范没有定义它们。如果你不告诉它,NPM 无法知道你想使用什么标签。它显然默认为数字预发布标签,这是有道理的,因为 SemVer 允许(-1、-2、-3 提供所有必要的语义)。

    NPM 文档很烂,幸运的是我从来不用 NPM。见https://docs.npmjs.com/cli/version。特别是:

    newversion 参数应该是有效的 semver 字符串、semver.inc 的有效第二个参数(patch、minor、major、prepatch、preminor、premajor、prerelease 之一)或 from-git。

    查看提供的链接(https://github.com/npm/node-semver#functions),他们似乎指的是增加指定的版本字段。在 package.json 文件中版本字符串上没有 alpha 标记的情况下,将缺少的数字预发布标记附加为 -1 是很有意义的。

    我刚刚测试了这个理论:

    > echo Test > test.txt
    > npm init
    This utility will walk you through creating a package.json file.
    It only covers the most common items, and tries to guess sane defaults.
    
    See `npm help json` for definitive documentation on these fields
    and exactly what they do.
    
    Use `npm install <pkg> --save` afterwards to install a package and
    save it as a dependency in the package.json file.
    
    Press ^C at any time to quit.
    name: (packageTest)
    version: (1.0.0) 0.1.0-alpha.0
    description: Test package.
    entry point: (index.js)
    test command:
    git repository:
    keywords:
    author:
    license: (ISC)
    About to write to D:\TMP\Joseph\packageTest\package.json:
    
    {
      "name": "packageTest",
      "version": "0.1.0-alpha.0",
      "description": "Test package.",
      "main": "index.js",
      "scripts": {
        "test": "echo \"Error: no test specified\" && exit 1"
      },
      "author": "",
      "license": "ISC"
    }
    
    
    Is this ok? (yes)
    
    > npm version prerelease
    v0.1.0-alpha.1
    
    > cat package.json
    {
      "name": "packageTest",
      "version": "0.1.0-alpha.1",
      "description": "Test package.",
      "main": "index.js",
      "scripts": {
        "test": "echo \"Error: no test specified\" && exit 1"
      },
      "author": "",
      "license": "ISC"
    }
    

    正如预期的那样。

    【讨论】:

      猜你喜欢
      • 2021-11-22
      • 1970-01-01
      • 1970-01-01
      • 2018-09-22
      • 2022-01-20
      • 1970-01-01
      • 2018-12-05
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多