web-dev-qa-db-fra.com

mettre à jour la version package.json automatiquement

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?

145
tUrG0n

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.

78
zemirco

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.

135
gustavotkg

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.

59
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:

  1. ... faire des tests ...

  2. remplacez votre package.json par une version mineure suivante (par exemple: 1.8.1 à 1.9.0)

  3. Poussez vos modifications

  4. créer une nouvelle version de tag git et

  5. publiez votre paquet npm.

--force est de montrer qui est le patron! Blagues à part voir https://github.com/npm/npm/issues/862

23
Jonatas Walker

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

https://docs.npmjs.com/cli/version

18
Tieme

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

10
Eric Kim

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>
3
Anima-t3d

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:

  1. Si l'utilisateur utilise une structure de dossiers dans laquelle il a un package.json, il utilise npm s'il utilise npm, il a accès au npm scripts.
  2. S'il a accès à npm scripts, il a accès à la commande npm version.
  3. En utilisant cette commande, il n’est plus nécessaire d’installer autre chose dans son ordinateur ou dans le canal CD/CI, ce qui, à long terme, réduira les efforts de maintenabilité du projet et facilitera la configuration.

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)

3
Alejandro Vales

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.

  1. x - majeur, cela se produit lorsque des changements majeurs se produisent et qu’il se produit une énorme différence de changement.
  2. y - mineur, en hausse lorsque de nouvelles fonctionnalités ou améliorations sont apparues.
  3. z-patch, en place lorsque des bogues sont corrigés ou que des modifications sont apportées aux versions antérieures.

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"

1
Mnemo