Featured image of post Guide de gestion des versions de paquets et SemVer : Que signifient les numéros de version dans package.json ?

Guide de gestion des versions de paquets et SemVer : Que signifient les numéros de version dans package.json ?

Une plongée approfondie dans la logique du Semantic Versioning (SemVer), expliquant les symboles comme ^ et ~ dans package.json, et partageant comment pnpm-lock.yaml assure la cohérence des environnements de développement en équipe et résout les conflits de versions.

Avez-vous déjà rencontré cette situation : vous avez écrit ^0.0.3 dans package.json, exécuté pnpm update, la dernière version est 0.1.0, mais le paquet n’a pas bougé du tout ? Est-ce que pnpm est cassé, ou jouez-vous au « sur place » ? Ne vous inquiétez pas, vous n’êtes pas seul ; c’est en fait un « mécanisme d’assurance de sécurité » dans le monde du logiciel.

Déchiffrer le code X.Y.Z : Spécifications d’une voiture modifiée

Imaginez que vous changez des pièces pour votre voiture. Le numéro de version X.Y.Z (par exemple : 1.2.3) est comme la liste de mise à jour pour cette voiture :

Champ Bref Description
X Changement Majeur C’est comme changer le moteur. Après l’avoir changé, les vieilles habitudes de conduite devront peut-être changer complètement, même la position du volant pourrait changer. C’est ce qu’on appelle les « changements de rupture » (Breaking Changes).
Y Nouvelles Fonctionnalités C’est comme installer une caméra de recul. Les fonctions sont plus fortes, il y a plus de choses, mais votre façon originale de conduire n’est pas du tout affectée. C’est une mise à jour sans douleur.
Z Petites Réparations C’est juste réparer un pneu ou changer un essuie-glace. Purement corriger des bugs. Si vous ne regardez pas le numéro de version, vous ne remarquerez peut-être même pas qu’il a été mis à jour.

L’esprit du contrat de symbole : Le « contrat de sécurité » de l’agent d’assurance

Le symbole que vous écrivez dans package.json détermine si votre code suivra l’air du temps ou explosera sur place. Imaginons cet ensemble de règles comme un contrat de rénovation :

Symbole Exemple (1.2.3) Plage de Mise à Jour Le franc-parler du conducteur vétéran
Pas de symbole 1.2.3 Fixe 1.2.3 Déterminé : Je veux cette version spécifique, je ne peux pas changer même une vis.
Tilde ~ ~1.2.3 < 1.3.0 Ajustements mineurs : Seulement autorisé à corriger les bugs (Z), pas de nouvelles fonctionnalités autorisées.
Caret ^ ^1.2.3 < 2.0.0 Déblocage de fonctionnalités : Peut ajouter des fonctionnalités (Y), mais ne changez pas le moteur (X).

Note spéciale : Pourquoi 0.x.x rend-il pnpm conservateur ?

C’est pourquoi votre ^0.0.3 ne monte pas ! Avant que le numéro de version ne saute à 1.0.0, cela s’appelle la « Période d’incubation » dans le monde du développement.

L’agent d’assurance (pnpm) devient très conservateur : il pense que chaque mise à jour de 0.0.x pourrait être une refonte majeure ! Donc ^0.0.3 n’ose mettre à jour que vers 0.0.4, il n’ose même pas franchir le pas vers 0.1.0. Si vous voulez mettre à jour, vous devez modifier manuellement package.json ou utiliser des moyens forcés.

Compétences de dépassement du conducteur vétéran : Mise à jour forcée

Lorsque la mise à jour automatique échoue, ou que vous êtes sûr de vouloir « foncer » vers la dernière version, vous pouvez utiliser ces deux mouvements :

Méthode Contenu
Nomination directe Tapez pnpm add some-package@latest. C’est comme le réalisateur qui ordonne directement : « Donnez-moi le dernier acteur ! »
Sélection interactive Tapez pnpm update --interactive (ou pnpm up -i). Cela répertorie tous les paquets pouvant être mis à jour, vous permettant de les choisir comme si vous choisissiez un menu.

Non seulement une recette, mais un paquet de repas surgelé : pnpm-lock.yaml

Dans le développement en équipe, pnpm-lock.yaml est cette « recette secrète de famille qui ne peut pas être modifiée » :

Fichier Contenu
package.json (Recette) Il dit « besoin de farine, d’œufs ». Mais il ne dit pas quelle marque ou origine. Le goût cuisiné (environnement) de chacun sera différent.
pnpm-lock.yaml (Repas surgelé) Il enregistre l’origine et le poids de chaque ingrédient avec précision. Lorsqu’un coéquipier exécute pnpm install, c’est comme ouvrir exactement le même paquet de repas surgelé, garantissant que la « Vibe » est complètement cohérente.

Lorsque vous rencontrez un « carambolage » (Conflit de fichier Lock)

Ne corrigez jamais manuellement les marqueurs de conflit ! Il est plein de valeurs de hachage lues par des machines. La façon la plus élégante est d’exécuter directement :

pnpm install

pnpm lira automatiquement les exigences des deux côtés et recalculera un tout nouveau contrat parfait.

Conclusion

Maîtriser les numéros de version n’est pas pour les examens, c’est pour rendre votre environnement de développement « solide comme un roc ». La prochaine fois que vous ne pourrez pas mettre à jour une version, ne doutez pas de la vie, vous êtes maintenant un vétéran titulaire !

All rights reserved,未經允許不得隨意轉載
Généré avec Hugo
Thème Stack conçu par Jimmy