Avant de créer une petite version et de la marquer, j'aimerais mettre à jour le package.json afin de refléter la nouvelle version du programme.
Est-il possible de modifier le fichier package.json
automatiquement?
Est-ce que l'utilisation d'un git pre-release hook
aide?
npm version
est probablement la bonne réponse. Juste pour donner une alternative, je recommande grunt-bump . Il est maintenu par l'un des gars de angular.js.
Usage:
grunt bump
>> Version bumped to 0.0.2
grunt bump:patch
>> Version bumped to 0.0.3
grunt bump:minor
>> Version bumped to 0.1.0
grunt bump
>> Version bumped to 0.1.1
grunt bump:major
>> Version bumped to 1.0.0
De toute façon, si vous utilisez grunt, cela pourrait être la solution la plus simple.
Bonne réponse
Pour ce faire, il suffit de npm version patch
=)
Mon ancienne réponse
Il n'y a pas de hook pre-release
à l'origine dans git
. Au moins, man githooks
ne l'affiche pas.
Si vous utilisez git-extra
( https://github.com/visionmedia/git-extras ), par exemple, vous pouvez utiliser un hook pre-release
qui est implémenté par comme vous pouvez le voir sur https://github.com/visionmedia/git-extras/blob/master/bin/git-release . Il suffit d'un fichier exécutable .git/hook/pre-release.sh
pour modifier votre fichier package.json
. Les validations, les poussées et les balises seront effectuées à l'aide de la commande git release
.
Si vous n'utilisez aucune extension pour git
, vous pouvez écrire un script Shell (je l'appellerai git-release.sh
) et vous pourrez l'aliaser en git release
avec quelque chose comme:
git config --global alias.release '!sh path/to/pre-release.sh $1'
Vous pouvez ensuite utiliser git release 0.4
pour exécuter path/to/pre-release.sh 0.4
. Votre script peut éditer package.json
, créer la balise et la transmettre au serveur.
C'est ce que je fais normalement avec mes projets:
npm version patch
git add *;
git commit -m "Commit message"
git Push
npm publish
La première ligne, npm version patch
, augmentera la version du correctif de 1 (x.x.1 à x.x.2) dans package.json
. Ensuite, vous ajoutez tous les fichiers - y compris package.json
qui, à ce stade, a été modifié. Ensuite, les git commit
et git Push
habituels, et enfin npm publish
pour publier le module.
J'espère que cela a du sens...
Merc.
Pour donner une approche plus à jour.
package.json
"scripts": {
"eslint": "eslint index.js",
"pretest": "npm install",
"test": "npm run eslint",
"preversion": "npm run test",
"version": "",
"postversion": "git Push && git Push --tags && npm publish"
}
Ensuite vous le lancez:
npm version minor --force -m "Some message to commit"
Qui va:
... faire des tests ...
remplacez votre package.json
par une version mineure suivante (par exemple: 1.8.1 à 1.9.0)
Poussez vos modifications
créer une nouvelle version de tag git et
publiez votre paquet npm.
--force
est de montrer qui est le patron! Blagues à part voir https://github.com/npm/npm/issues/862
En complément de npm version
, vous pouvez utiliser l'indicateur --no-git-tag-version
si vous souhaitez une version bump mais pas de balise ou un nouveau commit:
npm --no-git-tag-version version patch
Si vous utilisez du fil, vous pouvez utiliser
yarn version --patch
Ceci incrémentera package.json
version par le correctif (0.0.x)
, le validera et le balisera au format v0.0.0
De même, vous pouvez remplacer les versions mineures ou majeures en utilisant --minor
ou --major
Lorsque vous appuyez sur git, assurez-vous également de pousser les balises avec --follow-tags
git Push --follow-tags
Vous pouvez également créer un script pour cela
"release-it": "yarn version --patch && git Push --follow-tags"
Il suffit de le lancer en tapant yarn release-it
J'utilise husky et git-branch-is :
"scripts": {
...
"postmerge": "(git-branch-is master && npm version minor ||
(git-branch-is dev && npm --no-git-tag-version version patch)",
...
},
En savoir plus sur version npm
Webpack ou Vue.js
Si vous utilisez webpack ou Vue.js, vous pouvez l'afficher dans l'interface utilisateur à l'aide de Auto inject version - plug-in Webpack
NUXT
Dans nuxt.config.js
:
var WebpackAutoInject = require('webpack-auto-inject-version');
module.exports = {
build: {
plugins: [
new WebpackAutoInject({
// options
// example:
components: {
InjectAsComment: false
},
}),
]
},
}
Dans votre template
, par exemple dans le pied de page:
<p> All rights reserved © 2018 [v[AIV]{version}[/AIV]]</p>
Je souhaite clarifier les réponses de cette question.
Même si certaines solutions permettent de résoudre correctement le problème et d’apporter une solution, elles ne sont pas les bonnes. La bonne réponse à cette question est d'utiliser npm version
Est-il possible de modifier le fichier package.json automatiquement?
Oui, ce que vous pouvez faire pour que cela se produise est d’exécuter la commande npm version
lorsque vous en avez besoin, vous pouvez en savoir plus à ce sujet ici version npm , mais l’utilisation de base serait npm version patch
et cela ajouterait l'ordre de 3ème chiffre sur votre package.json
version (1.0. X)
Est-ce que l'utilisation d'un crochet de pré-version de Git pourrait vous aider?
Vous pouvez configurer pour exécuter la commande npm version
sur le hook de pré-lancement, selon vos besoins, mais cela dépend si vous en avez besoin ou non dans votre canal CD/CI, mais sans la commande npm version
. un hook git pre-release
ne peut rien faire "facilement" avec le package.json
La raison pour laquelle npm version
est la bonne réponse est la suivante:
package.json
, il utilise npm
s'il utilise npm
, il a accès au npm scripts
.npm scripts
, il a accès à la commande npm version
.Les autres réponses dans lesquelles d'autres outils sont proposés sont incorrectes.
gulp-bump
fonctionne mais nécessite un autre paquet supplémentaire qui pourrait créer des problèmes à long terme (point 3 de ma réponse)
grunt-bump
fonctionne mais nécessite un autre paquet supplémentaire qui pourrait créer des problèmes à long terme (point 3 de ma réponse)
Tout d'abord, vous devez comprendre les règles de mise à niveau du numéro de version. Vous pouvez en savoir plus sur le version sémantique ici.
Chaque version aura la version x.y.z où elle se définira à des fins différentes, comme indiqué ci-dessous.
Pour exécuter les scripts, vous pouvez le définir dans votre package.json.
"script": {
"buildmajor": "npm version major && ng build --prod",
"buildminor": "npm version minor && ng build --prod",
"buildpatch": "npm version patch && ng build --prod"
}
Dans votre terminal, vous devez simplement exécuter npm en fonction de vos besoins, comme
npm run buildpatch
Si vous l'exécutez dans git repo, la version par défaut de git-tag-version est true et si vous ne le souhaitez pas, vous pouvez ajouter la commande ci-dessous dans vos scripts:
--no-git-tag-version
pour par exemple: "npm --no-git-tag-version version major && ng build --prod"