^2.0 ou ~2.1.0 que vous avez testée.
Cette page s’adresse aux auteurs de plugins qui déclarent des dépendances dans plugin.json et aux responsables de la place de marché qui balisent les versions.
Ces cas sont couverts sur d’autres pages :
- Installation d’un plugin qui a des dépendances : voir Gérer les plugins installés
- Lecture d’une erreur de dépendance : voir Erreurs de dépendance
- Déclaration des packages npm et Bun dont le code de votre plugin a besoin : voir Dépendances des packages Node.js
Déclarer les dépendances
Sans contrainte de version, une dépendance se déplace vers chaque nouvelle version que sa place de marché publie la prochaine fois que les utilisateurs mettent à jour. Si cette version renomme un outil MCP que votre plugin appelle, votre plugin se casse pour tous ceux qui mettent à jour. Avec une contrainte telle que~2.1.0 sur une dépendance provenant d’une source sauvegardée par git, les utilisateurs qui ont votre plugin installé continuent à recevoir les correctifs 2.1.x de la dépendance et ne passent jamais à 2.2. Pour mettre à niveau selon votre propre calendrier, testez contre une version plus récente, puis publiez une nouvelle version de votre plugin avec une contrainte plus large.
Déclarer une dépendance avec une contrainte de version
Listez les dépendances dans le tableaudependencies du fichier .claude-plugin/plugin.json de votre plugin. Le manifeste suivant déclare une dépendance sans version et une dépendance avec contrainte :
.claude-plugin/plugin.json
"audit-logger" dans ce manifeste, ou "name@marketplace" pour le résoudre dans une autre place de marché. Avec une simple chaîne, votre plugin dépend de la version que la place de marché de ce plugin fournit.
Pour définir une contrainte de version, utilisez un objet avec ces champs, chacun étant une chaîne :
Une plage ne correspond pas aux versions de pré-version telles que
2.0.0-beta.1 sauf si vous acceptez avec un suffixe de pré-version tel que ^2.0.0-0.
Regrouper les plugins pour une équipe
Pour permettre aux ingénieurs d’installer un ensemble curé de plugins avec une seule commande, publiez un plugin dont le manifeste contient unname et un tableau dependencies. Un manifeste de plugin n’a besoin que de name, c’est donc un plugin valide, et l’installer installe chaque dépendance.
Par exemple, une équipe de plateforme peut publier des bundles spécifiques aux rôles dans une place de marché interne afin que les ingénieurs exécutent une seule claude plugin install au lieu d’installer chaque plugin séparément :
.claude-plugin/plugin.json
backend-standard avec la dépendance supplémentaire. Lorsque la place de marché ne met pas à jour automatiquement par défaut, les ingénieurs activent soit la mise à jour automatique pour la place de marché, soit mettent à jour manuellement :
- Activer la mise à jour automatique pour la place de marché : la prochaine mise à jour automatique déplace le bundle vers la nouvelle version et installe toutes les dépendances qu’il ajoute.
- Mettre à jour manuellement : exécutez
claude plugin update backend-standarddans un shell, puis/reload-pluginsdans une session ouverte pour installer les dépendances nouvellement ajoutées.
enabledPlugins dans les paramètres gérés. Voir Pré-installer et exiger des plugins.
Dépendre d’un plugin d’une autre place de marché
Par défaut, Claude Code n’installe pas une dépendance d’une place de marché différente de celle du plugin déclarant, sauf si l’utilisateur a déjà cette dépendance installée et activée au même niveau. Cette valeur par défaut empêche une place de marché d’installer silencieusement des plugins d’une source que l’utilisateur n’a pas examinée. Pour autoriser l’installation, ajoutez le nom de la place de marché cible àallowCrossMarketplaceDependenciesOn dans le marketplace.json de la place de marché racine. La place de marché racine est celle qui héberge le plugin que l’utilisateur installe. Seule la liste d’autorisation de la place de marché racine s’applique.
Le marketplace.json suivant permet à deploy-kit de dépendre d’un plugin de your-shared-marketplace :
.claude-plugin/marketplace.json
allowCrossMarketplaceDependenciesOn est manquant ou n’inclut pas la place de marché cible, Claude Code n’installe pas la dépendance. Lorsque la dépendance est déclarée dans l’entrée de la place de marché, l’installation elle-même est refusée avec un message qui commence par Dependency "audit-logger@your-shared-marketplace" (required by deploy-kit@your-marketplace) is in marketplace "your-shared-marketplace", which is not in the allowlist et nomme le champ à définir. Lorsqu’elle est déclarée dans plugin.json, l’installation se termine sans la dépendance et votre plugin échoue alors à charger.
La vérification de la liste d’autorisation ne s’applique pas à une dépendance qui est déjà activée. Si un utilisateur installe d’abord audit-logger de your-shared-marketplace lui-même, au même niveau, deploy-kit s’installe alors sans aucune modification de la liste d’autorisation.
Tester un plugin et sa dépendance localement
Si vous développez un plugin et le plugin dont il dépend en même temps, démarrez Claude Code à partir de votre shell et chargez les deux avec--plugin-dir :
- Pas de
versionnécessaire : leplugin.jsonlocal n’a pas besoin non plus d’uneversion, car une contrainte de version n’est pas vérifiée par rapport à une copie locale. - Entrées qui nomment une place de marché : une entrée qui nomme une place de marché correspond également à la copie locale sur Claude Code v2.1.242 ou ultérieur.
- Vous avez désactivé la copie locale : votre plugin est désactivé au prochain chargement de plugin, avec une erreur qui se termine par
is disabled — enable it or remove the dependency. Lorsque l’erreur nomme la dépendance comme<name>@inline, cet identifiant fait référence à la copie--plugin-dir. - Vous avez démarré une session sans le drapeau
--plugin-dirde la dépendance : l’erreur signale que la dépendance n’est pas installée. Passez le drapeau à nouveau, ou installez la dépendance à partir de sa place de marché.
--plugin-dir une seule fois. Si le dossier n’est pas lui-même un plugin, Claude Code charge chaque dossier enfant qui a un .claude-plugin/plugin.json. Nécessite Claude Code v2.1.265 ou ultérieur.
Publier un plugin dont d’autres dépendent
Si vous maintenez un plugin dont d’autres plugins dépendent avec une contrainte de version, balisez ses versions pour que ces contraintes puissent se résoudre. Une contrainte se résout par rapport aux balises git du référentiel qui héberge le plugin. Balisez le référentiel vers lequel la source du plugin du plugin dansmarketplace.json pointe :
- Source
github,url, ougit-subdir: le référentiel du plugin lui-même, donc l’auteur du plugin crée les balises - Chemin relatif tel que
./plugins/secrets-vault: le référentiel de la place de marché, donc le responsable de la place de marché crée les balises
Créer une balise de version
Balisez chaque version comme<plugin-name>--v<version>, où <version> correspond au champ version dans le plugin.json de ce commit. Le préfixe plugin-name permet à un référentiel de place de marché d’héberger plusieurs plugins avec des historiques de version indépendants.
Créez la balise à partir du répertoire du plugin, avec une télécommande origin configurée pour recevoir la balise poussée, en utilisant claude plugin tag :
- Valide le plugin
- Vérifie que
plugin.jsonet l’entrée de la place de marché s’accordent sur la version, lorsque le répertoire du plugin se trouve dans un checkout de place de marché - Nécessite un arbre de travail propre sous le répertoire du plugin
- Refuse si la balise existe déjà
Created tag secrets-vault--v2.1.0. Avec --push, elle imprime également Pushed to origin. Sans --push, elle imprime la commande git push à exécuter vous-même.
Passez --dry-run pour voir le plan sans rien créer.
La référence claude plugin tag liste les drapeaux restants.
Vous pouvez également exécuter git tag secrets-vault--v2.1.0 directement, tant que vous gardez la version dans plugin.json et dans l’entrée de la place de marché synchronisées vous-même.
Contraindre une dépendance qui a une source non-git
La résolution basée sur les balises s’applique uniquement aux sources sauvegardées par git. Pour une dépendance avec une source de pluginnpm, archive, ou command plugin source, la contrainte ne contrôle pas quelle version est récupérée. Elle est toujours vérifiée lorsque le plugin charge, et le plugin dépendant est désactivé si la version installée ne la satisfait pas.
Pour les sources npm, archive, et command, la version vérifiée est la version dans le plugin.json de la dépendance. Définissez-en une là avant de contraindre cette dépendance, car un plugin.json qui ne définit pas de version ne satisfait aucune contrainte.
Claude Code n’installe jamais une dépendance avec une source command lui-même, donc les utilisateurs l’installent d’abord. Il n’exécute jamais non plus le headersHelper d’une dépendance, donc les utilisateurs installent également une dépendance dont l’entrée de la place de marché en définit une avant d’installer votre plugin.
En plus de claude plugin install, ces opérations installent également toute dépendance déclarée manquante, et les limites command et headersHelper s’appliquent à elles aussi :
/reload-plugins- Mise à jour automatique de la place de marché du plugin dépendant
- Réexécution de
claude plugin installsur le plugin dépendant claude plugin marketplace add
Comment les dépendances se comportent pour vos utilisateurs
Ces sections décrivent comment Claude Code résout, vérifie et combine les contraintes que vous déclarez une fois que votre plugin est installé aux côtés d’autres.Comment une contrainte se résout par rapport aux balises
Lorsqu’un utilisateur installe un plugin qui déclare{ "name": "secrets-vault", "version": "~2.1.0" }, la dépendance s’installe à partir de la balise secrets-vault--v la plus élevée qui satisfait ~2.1.0 sur le référentiel qui héberge secrets-vault. Lorsqu’aucune balise ne satisfait la plage, l’installation échoue ou utilise la copie actuelle de la place de marché :
- Plugin avec son propre référentiel : l’installation échoue avec un message contenant
Dependency "secrets-vault@your-marketplace" has no git tag satisfying. - Plugin référencé par un chemin relatif : l’installation utilise la copie actuelle de la place de marché à la place, et la contrainte est vérifiée lorsque le plugin charge. Si cette copie est en dehors de la plage, le plugin dépendant reste désactivé et
claude plugin listafficheRequires "secrets-vault@your-marketplace" ~2.1.0, installed 3.0.0.
Confirmer la version résolue
Pour confirmer quelle version une contrainte s’est résolue, exécutezclaude plugin list dans votre shell. Une dépendance résolue par balise affiche sa version avec un suffixe de commit de 12 caractères, tel que 2.1.0-8713c5b11005.
Les vérifications de contrainte utilisent la version de la balise plutôt que la version dans plugin.json, même si plugin.json à ce commit est en retard.
Si vous forcez le déplacement d’une balise vers un commit différent, la prochaine installation récupère le contenu de ce commit au lieu de réutiliser une copie en cache obsolète. Voir Versions et mises à jour pour savoir comment la version d’un plugin devient sa clé de cache.
Combiner les contraintes de plusieurs plugins
Lorsque plusieurs plugins installés contraignent la même dépendance, la dépendance se résout à la version la plus élevée qui satisfait toutes leurs plages. Les combinaisons courantes se résolvent comme ceci :
La mise à jour automatique récupère une dépendance contrainte à la balise git la plus élevée qui satisfait la plage de chaque plugin installé, plutôt qu’à la dernière version de la place de marché. Si les plages des plugins installés ne se chevauchent pas, la mise à jour automatique laisse cette dépendance à sa version actuelle, et l’onglet Erreurs de
/plugin affiche une entrée nommant le plugin contraignant. S’ils se chevauchent mais qu’aucune balise ne tombe dans la plage, la mise à jour automatique récupère la copie actuelle de la place de marché et ignore la mise à jour lorsque la version de cette copie tombe en dehors de la plage de tout plugin installé.
Lorsqu’un utilisateur désinstalle le dernier plugin qui contraint une dépendance, la dépendance n’est plus contrainte à une plage de version et reprend le suivi de son entrée de place de marché à la prochaine mise à jour.
Voir aussi
claude plugin prune: supprimer les dépendances auto-installées dont aucun plugin n’a plus besoin- Héberger une place de marché : canaux de version et recommandation d’autres plugins