Il y a un très pratique npm version
commande. Outre les arguments comme major
, minor
et patch
, il accepte des arguments comme prerelease
, prepatch
, etc.
Il est dit dans la documentation que les commandes fonctionnent conformément à semver.inc
fonction.
Ces pre
commandes sur lesquelles j'ai une question.
Disons que je suis actuellement à la version v1.0.0
.
Si je lance npm version prerelease
il basculera la version en v1.0.1-0
.
Est-il possible de fournir un agrément supplémentaire pour un identifiant de pré-diffusion selon https://github.com/npm/node-semver#prerelease-identifiers ?
Je souhaite quelque chose comme npm version prerelease alpha
remplacerait la version par v1.0.1-alpha.0
mais cela ne fonctionne pas.
À partir de npm 6.4. vous pouvez utiliser le --preid
option de npm version
comme ça:
$ 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
J'ai regardé cela récemment pour voir s'il y avait des mises à jour à ce sujet ... mais il semble que les choses soient toujours les mêmes.
Non, aucun identifiant de version préliminaire de npm n'est pris en charge par la commande npm version. Vous pouvez voir le raisonnement de l'équipe ici: https://github.com/npm/npm/pull/12936#issuecomment-24815374
semver ( https://www.npmjs.com/package/semver ) prend en charge ce que vous essayez de faire, donc ce que vous pouvez faire est d'obtenir la version avec une commande comme celle-ci:
semver <current version> -i prerelease --preid <prelease identifier>
par exemple:
semver 1.0.1 -i prerelease --preid alpha
produira:
1.0.2-alpha.0
Avec ce résultat, vous pouvez le passer à la version npm (par exemple dans une build CI), comme ceci:
npm version <resulting version from semver command>
Une autre alternative consiste à utiliser la version sémantique (un projet indépendant): https://github.com/semantic-release/semantic-release
Cela automatisera le versioning sémantique basé sur les messages de commit, mais je pense que cela ne fonctionne qu'avec les modules hébergés par github repo, je n'en suis pas sûr.
Comme l'autre réponse mentionnée, cela n'est pas pris en charge par npm pour la raison mentionnée dans ce commentaire
Mais vous pouvez obtenir le même résultat en utilisant le package semver et les scripts npm en ajoutant quelque chose comme ce qui suit au 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)"
}
et courir npm run beta-version-patch
Pour être plus générique, vous pouvez utiliser les éléments suivants:
"scripts": {
"semver": "npm version $(semver $npm_package_version -i $release --preid $preid)"
}
et exécutez des commandes comme:
release=prerelease preid=alpha npm run semver
release=prerelease preid=beta npm run semver
release=premajor preid=alpha npm run semver