
Andrew Hanna

Andrew Hanna

Kurze Antwort: Paketubergreifende Abhangigkeitsauflosung ist der Weg,
auf dem Salesforce entscheidet, welche Pakete in welchen Versionen bereits vorhanden
sein mussen, 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 Abhangigkeit 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 schlagt 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
Abhangigkeiten, die indirekten werden berechnet. Ohne das mussen Sie jede Ebene
selbst auffuhren, dauerhaft.
Das schrankt die Architektur ein, prufen Sie es also, bevor Sie sie zeichnen.
Ein 1GP-Basispaket unter einer 2GP-Erweiterung ist der mit Abstand haufigste Abhangigkeitsentwurf, der spat wieder aufgelost werden muss, und dann ist er teuer. Lesen Sie die unterstutzten Kombinationen vor dem ersten Build, nicht danach.
RELEASED folgt
Ihrer zuletzt veroffentlichten Version, was in der Entwicklung praktisch und im
Release-Build eine Uberraschung ist.
SubscriberPackageVersion sagt Ihnen, was in dieser Org installiert ist
und in welcher Version, und das schlagt einen Blick auf die Seite Installed Packages
mit Hoffnung im Gepack.
Wenn Sie diese Reihenfolge fur Ihr eigenes Produkt nicht aus dem Kopf nennen konnen, kann Ihr Support das in dem Moment auch nicht, in dem ein Kunde feststeckt.
Die Reihenfolge, die funktioniert, wenn sich ein Basispaket andert: Basisversion veroffentlichen, Subscriber uber eine empfohlene Version oder ein Push Upgrade darauf bringen, und erst dann das abhangige Paket veroffentlichen, 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 konnen.
sfdx-project.json aufbauen und
den Build bei einem Zyklus scheitern lassen.
Serpent beherrscht paketubergreifende Abhangigkeitsauflosung, 1GP-, 2GP- und Managed-Package-Workflows sowie Versionsmanagement uber 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 abhangen?
Standardmassig nicht. Salesforce blockiert die Kombination, und eine individuelle Ausnahme wird uber einen Fall beim Salesforce Partner Support beantragt.
Muss ich transitive Abhangigkeiten auflisten?
Nur wenn Sie wollen. Mit
"calculateTransitiveDependencies": true deklarieren Sie direkte
Abhangigkeiten, die indirekten werden berechnet. Ohne das muss jede Ebene von Hand in
der Liste stehen.
Was passiert, wenn zwei Pakete voneinander abhangen?
Nichts Gutes, denn zirkulare Abhangigkeiten werden nicht unterstutzt. Ziehen Sie die gemeinsamen Metadaten in ein tieferes Paket, von dem beide abhangen.
Welches Paket aktualisiere ich in einer Subscriber-Org zuerst?
Das unterste im Graphen. Abhangigkeiten kommen vor den Paketen, die sie brauchen, in derselben Reihenfolge wie bei der Installation.
Warum scheitert das Upgrade meines Kunden mit einem Abhangigkeitsfehler?
Meist an einer Mindestversion. Das installierte Basispaket ist alter als das, was Ihr neues Release verlangt: Basispaket zuerst aktualisieren, dann erneut versuchen.
Unverbindlich.