Существуют ли предварительные идентификаторы версии npm?

3 ответов


начиная с npm 6.4.0 можно использовать на npm version такой:

$ 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

Я недавно смотрел на это, чтобы узнать, были ли какие-либо обновления по этому вопросу... но, кажется, все по-прежнему.

нет, нет никаких предварительных идентификаторов версии npm, поддерживаемых командой версии 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>

Другой альтернативой является использование semantic-release (независимый проект): https://github.com/semantic-release/semantic-release

это автоматизирует семантическое управление версиями на основе о сообщениях фиксации, но я думаю, что он работает только с размещенными модулями GitHub repo, не уверен в этом.


как и другой упомянутый ответ, это не поддерживается 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