^2.0 oder ~2.1.0, gegen den Sie getestet haben.
Diese Seite ist für Plugin-Autoren, die Abhängigkeiten in plugin.json deklarieren, und für Marketplace-Betreuer, die Releases taggen.
Diese Fälle werden auf anderen Seiten behandelt:
- Installation eines Plugins mit Abhängigkeiten: siehe Installierte Plugins verwalten
- Lesen eines Abhängigkeitsfehlers: siehe Abhängigkeitsfehler
- Deklarieren der npm- und Bun-Pakete, die der eigene Code Ihres Plugins benötigt: siehe Node.js-Paketabhängigkeiten
Abhängigkeiten deklarieren
Ohne Versionsbeschränkung wechselt eine Abhängigkeit zu jedem neuen Release, das sein Marketplace veröffentlicht, wenn Benutzer das nächste Mal aktualisieren. Wenn dieses Release ein MCP-Tool umbenennt, das Ihr Plugin aufruft, bricht Ihr Plugin für alle, die aktualisieren. Mit einer Beschränkung wie~2.1.0 auf eine Abhängigkeit aus einer Git-gestützten Quelle erhalten Benutzer, die Ihr Plugin installiert haben, weiterhin 2.1.x-Patches der Abhängigkeit und wechseln nie zu 2.2. Um nach Ihrem eigenen Zeitplan zu aktualisieren, testen Sie gegen ein neueres Release und veröffentlichen dann eine neue Version Ihres Plugins mit einer breiteren Beschränkung.
Abhängigkeit mit Versionsbeschränkung deklarieren
Listen Sie Abhängigkeiten imdependencies-Array der .claude-plugin/plugin.json Ihres Plugins auf. Das folgende Manifest deklariert eine unversionierte Abhängigkeit und eine beschränkte Abhängigkeit:
.claude-plugin/plugin.json
"audit-logger" in diesem Manifest, oder "name@marketplace", um ihn in einem anderen Marketplace aufzulösen. Mit einem einfachen String hängt Ihr Plugin von der Version ab, die der Marketplace dieses Plugins bereitstellt.
Um eine Versionsbeschränkung festzulegen, verwenden Sie ein Objekt mit diesen Feldern, jeweils ein String:
Ein Bereich stimmt nicht mit Vorabversionen wie
2.0.0-beta.1 überein, es sei denn, Sie entscheiden sich mit einem Vorabversions-Suffix wie ^2.0.0-0 dafür.
Plugins für ein Team bündeln
Um Ingenieuren die Installation eines kuratierten Satzes von Plugins mit einem Befehl zu ermöglichen, veröffentlichen Sie ein Plugin, dessen Manifest einenname und ein dependencies-Array enthält. Ein Plugin-Manifest benötigt nur name, daher ist dies ein gültiges Plugin, und die Installation installiert jede Abhängigkeit.
Beispielsweise kann ein Plattform-Team rollenspezifische Bundles in einem internen Marketplace veröffentlichen, damit Ingenieure einen claude plugin install ausführen, anstatt jedes Plugin separat zu installieren:
.claude-plugin/plugin.json
backend-standard-Version mit der zusätzlichen Abhängigkeit. Wenn der Marketplace nicht standardmäßig automatisch aktualisiert, aktivieren Ingenieure entweder die automatische Aktualisierung für den Marketplace oder aktualisieren manuell:
- Automatische Aktualisierung für den Marketplace aktivieren: Die nächste automatische Aktualisierung verschiebt das Bundle zur neuen Version und installiert alle Abhängigkeiten, die es hinzufügt.
- Manuell aktualisieren: Führen Sie
claude plugin update backend-standardin einer Shell aus, dann/reload-pluginsin einer offenen Sitzung, um die neu hinzugefügten Abhängigkeiten zu installieren.
enabledPlugins in verwalteten Einstellungen hinzu. Siehe Plugins vorinstallieren und erforderlich machen.
Plugin aus einem anderen Marketplace abhängen
Standardmäßig installiert Claude Code eine Abhängigkeit nicht aus einem anderen Marketplace als dem des deklarierenden Plugins selbst, es sei denn, der Benutzer hat diese Abhängigkeit bereits installiert und aktiviert im gleichen Bereich. Dieser Standard verhindert, dass ein Marketplace stillschweigend Plugins aus einer Quelle installiert, die der Benutzer nicht überprüft hat. Um die Installation zu ermöglichen, fügen Sie den Namen des Ziel-Marketplaces zuallowCrossMarketplaceDependenciesOn in der marketplace.json des Root-Marketplaces hinzu. Der Root-Marketplace ist derjenige, der das Plugin hostet, das der Benutzer installiert. Nur die Allowlist des Root-Marketplaces gilt.
Die folgende marketplace.json ermöglicht deploy-kit, von einem Plugin aus your-shared-marketplace abhängig zu sein:
.claude-plugin/marketplace.json
allowCrossMarketplaceDependenciesOn fehlt oder den Ziel-Marketplace nicht enthält, installiert Claude Code die Abhängigkeit nicht. Wenn die Abhängigkeit im Marketplace-Eintrag deklariert ist, wird die Installation selbst mit einer Nachricht abgelehnt, die mit Dependency "audit-logger@your-shared-marketplace" (required by deploy-kit@your-marketplace) is in marketplace "your-shared-marketplace", which is not in the allowlist beginnt und das zu setzende Feld benennt. Wenn sie in plugin.json deklariert ist, wird die Installation ohne die Abhängigkeit abgeschlossen und Ihr Plugin kann dann nicht geladen werden.
Die Allowlist-Prüfung gilt nicht für eine Abhängigkeit, die bereits aktiviert ist. Wenn ein Benutzer audit-logger aus your-shared-marketplace zuerst selbst installiert, im gleichen Bereich, installiert sich deploy-kit dann ohne Änderungen an der Allowlist.
Plugin und seine Abhängigkeit lokal testen
Wenn Sie ein Plugin und das Plugin, von dem es abhängt, gleichzeitig entwickeln, starten Sie Claude Code aus Ihrer Shell und laden beide mit--plugin-dir:
- Kein
versionerforderlich: die lokaleplugin.jsonbenötigt auch keineversion, da eine Versionsbeschränkung nicht gegen eine lokale Kopie überprüft wird. - Einträge, die einen Marketplace benennen: Ein Eintrag, der einen Marketplace benennt, stimmt auch mit der lokalen Kopie auf Claude Code v2.1.242 oder später überein.
- Sie haben die lokale Kopie deaktiviert: Ihr Plugin wird beim nächsten Plugin-Laden mit einem Fehler deaktiviert, der mit
is disabled — enable it or remove the dependencyendet. Wenn der Fehler die Abhängigkeit als<name>@inlinebenennt, bezieht sich dieser Bezeichner auf die--plugin-dir-Kopie. - Sie haben eine Sitzung ohne das
--plugin-dir-Flag der Abhängigkeit gestartet: Der Fehler meldet, dass die Abhängigkeit nicht installiert ist. Übergeben Sie das Flag erneut, oder installieren Sie die Abhängigkeit aus ihrem Marketplace.
--plugin-dir übergeben. Wenn der Ordner selbst kein Plugin ist, lädt Claude Code jeden untergeordneten Ordner, der eine .claude-plugin/plugin.json hat. Erfordert Claude Code v2.1.265 oder später.
Plugin veröffentlichen, von dem andere abhängen
Wenn Sie ein Plugin verwalten, von dem andere Plugins mit einer Versionsbeschränkung abhängen, taggen Sie seine Releases, damit diese Beschränkungen aufgelöst werden können. Eine Beschränkung wird gegen Git-Tags im Repository aufgelöst, das das Plugin hostet. Taggen Sie das Repository, auf das die Plugin-Quelle des Plugins inmarketplace.json verweist:
github-,url- odergit-subdir-Quelle: das eigene Repository des Plugins, daher erstellt der Autor des Plugins die Tags- Relativer Pfad wie
./plugins/secrets-vault: das Marketplace-Repository, daher erstellt der Marketplace-Betreuer die Tags
Release-Tag erstellen
Taggen Sie jedes Release als<plugin-name>--v<version>, wobei <version> dem version-Feld in der plugin.json dieses Commits entspricht. Das Plugin-Name-Präfix ermöglicht es einem Marketplace-Repository, mehrere Plugins mit unabhängigen Versionshistorien zu hosten.
Erstellen Sie das Tag aus dem Plugin-Verzeichnis mit einem konfigurierten origin-Remote zum Empfangen des gepushten Tags, mit claude plugin tag:
- Validiert das Plugin
- Prüft, dass
plugin.jsonund der Marketplace-Eintrag sich auf die Version einigen, wenn sich das Plugin-Verzeichnis in einem Marketplace-Checkout befindet - Erfordert einen sauberen Arbeitsbaum unter dem Plugin-Verzeichnis
- Lehnt ab, wenn das Tag bereits existiert
Created tag secrets-vault--v2.1.0 aus. Mit --push gibt es auch Pushed to origin aus. Ohne --push gibt es den git push-Befehl aus, den Sie selbst ausführen können.
Übergeben Sie --dry-run, um den Plan zu sehen, ohne etwas zu erstellen.
Die claude plugin tag-Referenz listet die verbleibenden Flags auf.
Sie können auch git tag secrets-vault--v2.1.0 direkt ausführen, solange Sie die version in plugin.json und im Marketplace-Eintrag selbst synchron halten.
Abhängigkeit mit nicht-Git-Quelle beschränken
Tag-basierte Auflösung gilt nur für Git-gestützte Quellen. Für eine Abhängigkeit mit einernpm-, archive- oder command-Plugin-Quelle steuert die Beschränkung nicht, welche Version abgerufen wird. Sie wird immer noch überprüft, wenn das Plugin geladen wird, und das abhängige Plugin wird deaktiviert, wenn die installierte Version sie nicht erfüllt.
Für npm-, archive- und command-Quellen ist die überprüfte Version die version in der plugin.json der Abhängigkeit. Setzen Sie eine dort, bevor Sie diese Abhängigkeit beschränken, da eine plugin.json, die keine Version setzt, keine Beschränkung erfüllt.
Claude Code installiert eine Abhängigkeit mit einer command-Quelle nie selbst, daher installieren Benutzer sie zuerst. Es führt auch nie den headersHelper einer Abhängigkeit aus, daher installieren Benutzer auch eine Abhängigkeit, deren Marketplace-Eintrag einen setzt, bevor sie Ihr Plugin installieren.
Neben claude plugin install installieren diese Operationen auch alle fehlenden deklarierten Abhängigkeiten, und die command- und headersHelper-Limits gelten auch für sie:
/reload-plugins- Automatische Aktualisierung des Marketplaces des abhängigen Plugins
- Erneutes Ausführen von
claude plugin installauf dem abhängigen Plugin claude plugin marketplace add
Wie sich Abhängigkeiten für Ihre Benutzer verhalten
Diese Abschnitte beschreiben, wie Claude Code die Beschränkungen auflöst, überprüft und kombiniert, die Sie deklarieren, sobald Ihr Plugin neben anderen installiert ist.Wie eine Beschränkung gegen Tags aufgelöst wird
Wenn ein Benutzer ein Plugin installiert, das{ "name": "secrets-vault", "version": "~2.1.0" } deklariert, wird die Abhängigkeit aus dem höchsten secrets-vault--v-Tag installiert, der ~2.1.0 im Repository erfüllt, das secrets-vault hostet. Wenn kein Tag den Bereich erfüllt, schlägt die Installation fehl oder verwendet die aktuelle Kopie des Marketplaces:
- Plugin mit eigenem Repository: Die Installation schlägt mit einer Nachricht fehl, die
Dependency "secrets-vault@your-marketplace" has no git tag satisfyingenthält. - Plugin, auf das ein relativer Pfad verweist: Die Installation verwendet stattdessen die aktuelle Kopie des Marketplaces, und die Beschränkung wird überprüft, wenn das Plugin geladen wird. Wenn diese Kopie außerhalb des Bereichs liegt, bleibt das abhängige Plugin deaktiviert und
claude plugin listzeigtRequires "secrets-vault@your-marketplace" ~2.1.0, installed 3.0.0.
Aufgelöste Version bestätigen
Um zu bestätigen, welche Version eine Beschränkung aufgelöst hat, führen Sieclaude plugin list in Ihrer Shell aus. Eine Tag-aufgelöste Abhängigkeit zeigt ihre Version mit einem 12-stelligen Commit-Suffix, wie 2.1.0-8713c5b11005.
Beschränkungsprüfungen verwenden die Version des Tags statt der version in plugin.json, auch wenn plugin.json bei diesem Commit hinterherhinkt.
Wenn Sie ein Tag zu einem anderen Commit verschieben, ruft die nächste Installation den Inhalt dieses Commits ab, anstatt eine veraltete zwischengespeicherte Kopie wiederzuverwenden. Siehe Versionen und Updates, wie die Version eines Plugins sein Cache-Schlüssel wird.
Beschränkungen von mehreren Plugins kombinieren
Wenn mehrere installierte Plugins die gleiche Abhängigkeit beschränken, wird die Abhängigkeit zur höchsten Version aufgelöst, die alle ihre Bereiche erfüllt. Häufige Kombinationen werden wie folgt aufgelöst:
Die automatische Aktualisierung ruft eine beschränkte Abhängigkeit beim höchsten Git-Tag ab, der jeden Bereich des installierten Plugins erfüllt, anstatt bei der neuesten Version des Marketplaces. Wenn sich die Bereiche der installierten Plugins nicht überlappen, lässt die automatische Aktualisierung diese Abhängigkeit bei ihrer aktuellen Version und die Registerkarte
/plugin Errors zeigt einen Eintrag, der das beschränkende Plugin benennt. Wenn sie sich überlappen, aber kein Tag in den Bereich fällt, ruft die automatische Aktualisierung die aktuelle Kopie des Marketplaces ab und überspringt die Aktualisierung, wenn die version dieser Kopie außerhalb des Bereichs eines installierten Plugins liegt.
Wenn ein Benutzer das letzte Plugin deinstalliert, das eine Abhängigkeit beschränkt, wird die Abhängigkeit nicht mehr auf einen Versionsbereich beschränkt und verfolgt bei der nächsten Aktualisierung wieder ihren Marketplace-Eintrag.
Siehe auch
claude plugin prune: Entfernen Sie automatisch installierte Abhängigkeiten, die kein Plugin mehr benötigt- Marketplace hosten: Release-Kanäle und Empfehlung anderer Plugins