
Andrew Hanna

Andrew Hanna

Kurze Antwort: Paketübergreifende Abhängigkeitsauflösung ist der Weg,
auf dem Salesforce entscheidet, welche Pakete in welchen Versionen bereits vorhanden
sein müssen, bevor ein weiteres installiert oder aktualisiert werden kann. Deklariert
wird sie im Array dependencies in sfdx-project.json, in
Installationsreihenfolge. Stimmen Reihenfolge und Mindestversionen, sind
Subscriber-Upgrades langweilig. Stimmen sie nicht, landet eine Org auf einer Version,
die sie nicht mehr verlassen kann.
Eine Abhängigkeit besteht, sobald Metadaten in einem Paket Metadaten in einem anderen referenzieren: ein Flow auf einem Managed Object, eine Apex-Klasse, die eine Basisklasse erweitert, ein Field Set auf einem fremden Feld. Die praktische Folge ist eine Vorbedingung. Das referenzierte Paket muss zuerst installiert sein, in einer Version mindestens so neu wie die, gegen die Sie gebaut haben, sonst schlägt die Installation fehl.
Im Package-Directory-Eintrag von sfdx-project.json, in einer von zwei
Formen:
{ "package": "[email protected]" }
{ "package": "MyPackage", "versionNumber": "1.0.0.RELEASED" }
Drei Regeln wiegen schwerer als die Syntax.
"calculateTransitiveDependencies": true deklarieren Sie nur direkte
Abhängigkeiten, die indirekten werden berechnet. Ohne das müssen Sie jede Ebene
selbst aufführen, dauerhaft.
Das schränkt die Architektur ein, prüfen Sie es also, bevor Sie sie zeichnen.
Ein 1GP-Basispaket unter einer 2GP-Erweiterung ist der mit Abstand häufigste Abhängigkeitsentwurf, der spät wieder aufgelöst werden muss, und dann ist er teuer. Lesen Sie die unterstützten Kombinationen vor dem ersten Build, nicht danach.
RELEASED folgt
Ihrer zuletzt veröffentlichten Version, was in der Entwicklung praktisch und im
Release-Build eine Überraschung ist.
SubscriberPackageVersion sagt Ihnen, was in dieser Org installiert ist
und in welcher Version, und das schlägt einen Blick auf die Seite Installed Packages
mit Hoffnung im Gepäck.
Wenn Sie diese Reihenfolge für Ihr eigenes Produkt nicht aus dem Kopf nennen können, kann Ihr Support das in dem Moment auch nicht, in dem ein Kunde feststeckt.
Die Reihenfolge, die funktioniert, wenn sich ein Basispaket ändert: Basisversion veröffentlichen, Subscriber über eine empfohlene Version oder ein Push Upgrade darauf bringen, und erst dann das abhängige Paket veröffentlichen, das sie voraussetzt. Wer die beiden vertauscht, erzeugt ein Upgrade, das an einer Vorbedingung scheitert, in einer Org, die Sie weder sehen noch von Ihrer Seite reparieren können.
sfdx-project.json aufbauen und
den Build bei einem Zyklus scheitern lassen.
Serpent beherrscht paketübergreifende Abhängigkeitsauflösung, 1GP-, 2GP- und Managed-Package-Workflows sowie Versionsmanagement über Subscriber-Orgs in jedem Tarif, auch im kostenlosen. Weitere Packaging-Playbooks finden Sie in unserer SF-Guides-Bibliothek.
Darf ein Managed-2GP-Paket von einem Managed-1GP-Paket abhängen?
Standardmäßig nicht. Salesforce blockiert die Kombination, und eine individuelle Ausnahme wird über einen Fall beim Salesforce Partner Support beantragt.
Muss ich transitive Abhängigkeiten auflisten?
Nur wenn Sie wollen. Mit
"calculateTransitiveDependencies": true deklarieren Sie direkte
Abhängigkeiten, die indirekten werden berechnet. Ohne das muss jede Ebene von Hand in
der Liste stehen.
Was passiert, wenn zwei Pakete voneinander abhängen?
Nichts Gutes, denn zirkuläre Abhängigkeiten werden nicht unterstützt. Ziehen Sie die gemeinsamen Metadaten in ein tieferes Paket, von dem beide abhängen.
Welches Paket aktualisiere ich in einer Subscriber-Org zuerst?
Das unterste im Graphen. Abhängigkeiten kommen vor den Paketen, die sie brauchen, in derselben Reihenfolge wie bei der Installation.
Warum scheitert das Upgrade meines Kunden mit einem Abhängigkeitsfehler?
Meist an einer Mindestversion. Das installierte Basispaket ist alter als das, was Ihr neues Release verlangt: Basispaket zuerst aktualisieren, dann erneut versuchen.
Unverbindlich.