Существуют ли пререлизные идентификаторы версии npm?
Там очень удобно npm version
команда. Помимо таких аргументов, как major
, minor
а также patch
он принимает аргументы как prerelease
, prepatch
, так далее.
В документации сказано, что команды работают в соответствии с semver.inc
функция.
Эти pre
У меня есть вопросы по поводу команд.
Скажи, что я в настоящее время в версии v1.0.0
,
Если я бегу npm version prerelease
это повысит версию до v1.0.1-0
,
Можно ли предоставить дополнительный агент для пререлизного идентификатора в соответствии с https://github.com/npm/node-semver?
Я желаю что-то вроде npm version prerelease alpha
натолкнет версию на v1.0.1-alpha.0
но это не работает
3 ответа
Начиная с npm 6.4.0 вы можете использовать --preid
вариант 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 по причине, указанной в этом комментарии.
Но вы можете добиться того же, используя пакет 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
Я смотрел на это недавно, чтобы увидеть, есть ли какие-либо обновления по этому вопросу... но, похоже, все по-прежнему.
Нет, идентификаторы предварительной версии npm не поддерживаются командой npm version. Вы можете увидеть обоснование команды здесь: https://github.com/npm/npm/pull/12936
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 репо модулями, не уверен в этом.