npm版本添加Alpha后缀

Bam*_*ieh 6 node.js npm semantic-versioning

我如何使用npm版本控制package.json来包含-alpha该版本。

运行npm version <new version>package.js增加文件的版本,但是我想在-alpha该版本中添加后缀,但是我无法这样做,因为文档中未对此进行说明,但是semver本身对此提供了支持。

实际结果:

> npm version prerelease
> v0.2.1-1
Run Code Online (Sandbox Code Playgroud)

预期结果:

> v0.2.1-alpha
Run Code Online (Sandbox Code Playgroud)

小智 30

您不能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
Run Code Online (Sandbox Code Playgroud)

示例 2. 将alpha 转换为 beta:

# 2.0.0-alpha.0 => 2.0.0-beta.0
npm version prerelease --preid beta
Run Code Online (Sandbox Code Playgroud)

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

# 2.0.0-beta.0 => 2.0.0-beta.1
npm version prerelease
Run Code Online (Sandbox Code Playgroud)


jwd*_*hue 10

虽然 -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(补丁,轻微,重大的prepatch,preminor,premajor,抢鲜之一),或者从-饭桶。

查看提供的链接(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"
}
Run Code Online (Sandbox Code Playgroud)

正如预期的那样。