Erstellen Ihres ersten Pakets
Lernziele
Nachdem Sie diese Lektion abgeschlossen haben, sind Sie in der Lage, die folgenden Aufgaben auszuführen:
- Kennenlernen der Befehlszeilenbefehle für die Paketerstellung
- Beschreiben der grundlegenden Anwendungsfälle für die Paketerstellung
- Packen der Beispielanwendung DreamHouse LWC und Installieren der Anwendung in einem Trailhead Playground
Darum lieben wir die Paketentwicklung
Unserer Meinung nach ist die Paketentwicklung eine der spannendsten Funktionen für Salesforce Platform-Entwickler. Sie steht bekannten, revolutionären Innovationen, wie z. B. geschnittenem Brot, Video-Streaming-Diensten und dem Handy in nichts nach. Falls bei Ihnen jedoch noch mehr Überzeugungsarbeit notwendig ist, fassen wir hier nochmal die wichtigsten Vorteile zusammen, die bisher behandelt wurden. Paketentwicklung:
- Folgt bewährten Vorgehensweisen in Bezug auf den Lebenszyklus der Softwareentwicklung. Ist kompatibel mit den Funktionen von Salesforce DX: Projekte, CLI-Befehle und Testorganisationen wurden speziell für die Paketentwicklung konzipiert.
- Kapselt alle Änderungen, die Sie zwischen den Phasen des Lebenszyklus nachverfolgen, in einem Artefakt mit Versionsverwaltung.
- Erleichtert Ihnen, Forderungen nach neuen Funktionen umzusetzen. Sie können Komponenten in Ihrem Paket einfach hinzufügen, aktualisieren oder löschen.
- Bietet einen verbesserten Protokollverlauf, sodass Sie die an Ihrer Produktionsorganisation vorgenommenen Änderungen besser nachverfolgen und nachvollziehen können.
- Organisiert Quellen. Es lässt sich viel leichter feststellen, welche Komponenten zu welchen Anwendungen und Funktionen gehören.
- Fördert die iterative und modulare Entwicklung.
- Unterstützt Abhängigkeiten zwischen freigeschalteten Paketen. Ein einzelnes nicht gesperrtes Paket kann von mehreren nicht gesperrten Paketen sowie verwalteten Paketen der ersten und zweiten Generation abhängig sein.
- Unterstützt Continuous Integration und Continuous Delivery, da die CLI-Befehle für die Paketerstellung es ermöglichen, jeden Schritt in der Bereitstellungs-Pipeline vollständig zu automatisieren.
Einfache Anwendungsfälle der Paketentwicklung
Freigeschaltete Pakete eignen sich hervorragend für interne Geschäftsanwendungen. Nehmen wir Folgendes an:
- Ihre Finanzabteilung möchte, dass Ihr IT-Team eine Anwendung erstellt, mit der Mitarbeiter ihre Spesen einreichen können. Ihr Team beschließt, für die Entwicklung und Verteilung der Anwendung freigeschaltete Pakete zu verwenden.
- Ihre Personalabteilung möchte, dass Ihr IT-Team eine Anwendung erstellt, mit der Mitarbeiter potenzielle neue Mitarbeiter empfehlen können. Mitarbeiter sollen die Empfehlungsanwendung nutzen, um Stellenausschreibungen bekannt zu machen, Freunde zu empfehlen und Empfehlungsboni zu erhalten. Ihr Team beschließt, für die Entwicklung und Verteilung der Anwendung freigeschaltete Pakete zu verwenden.
Für jeden dieser Fälle beginnen Sie ein komplett neues Projekt. Alle Ihre Quellen sind in einem Salesforce DX-Projekt im Quellformat enthalten (und werden in Ihrem Versionskontrollsystem committet). Wenn eine dieser Anwendungen zur Verteilung bereit steht, erstellen Sie ein freigeschaltetes Paket, das Sie in einer Testorganisation oder Sandbox testen und dann in der Produktionsorganisation installieren. Falls das Team irgendwann eine neue Funktion benötigt, können Sie diese hinzufügen und eine neue Paketversion erstellen. Ganz einfach. einfach.
Da Sie jetzt die Vorteile der Paketentwicklung kennen, zeigen wir Ihnen als Nächstes, wie Sie ein nicht gesperrtes Paket erstellen.
Konfigurieren Sie Ihre Umgebung
Ehe es ans Eingemachte geht, muss ein neuer Trailhead Playground eingerichtet werden, in dem der Dev Hub und das Packen aktiviert sind.
- Um einen neuen Trailhead Playground zu erstellen, wechseln Sie zur praktischen Aufgabe am Ende dieser Lerneinheit. Klicken Sie auf die Playground-Informationen links neben der Schaltfläche "Starten".
- Wählen Sie dann Create Playground (Playground erstellen) aus.

Hinweis: Es ist zwar möglich, einen vorhandenen Trailhead Playground wiederzuverwenden, aber wenn Sie mit einem neuen Playground beginnen, können Sie sicherstellen, dass Sie mit einer einwandfreien Umgebung arbeiten.
- Nachdem Sie einen neuen Trailhead Playground erstellt haben, klicken Sie auf Launch (Starten), um den Playground zu öffnen. Stellen Sie dann sicher, dass Sie sowohl den Benutzernamen als auch das Kennwort des Playgrounds kennen. Sie benötigen diese Informationen in einem der nächsten Schritte.
Siehe Abrufen Ihres Benutzernamens und Zurücksetzen Ihres Kennworts.
- Geben Sie in Ihrem Trailhead Playground unter "Setup" im Feld "Schnellsuche" den Text "Dev Hub" ein und wählen Sie Dev Hub aus. Klicken Sie auf Dev Hub aktivieren und dann auf Nicht gesperrte Pakete und verwaltete Pakete der zweiten Generation aktivieren.
- Erstellen Sie einen GitHub-Account, wenn Sie nicht bereits einen haben.
- Installieren Sie Salesforce CLI auf Ihrem Computer.
Abrufen des DreamHouse-Quellcodes mit Git
Nehmen wir zu Vorführungszwecken an, dass Sie die Anwendung DreamHouse LWC für eines Ihrer Unternehmensteams erstellen und bereitstellen.
Falls Sie derzeit Salesforce DX-Funktionen und -Tools verwenden, sind Sie eventuell bereits mit dem Beispielrepository DreamHouse LWC vertraut. DreamHouse LWC ist eine eigenständige Anwendung, die viele in Salesforce Platform verfügbare Funktionen bietet. Sie verwendet u. a. Lightning-Webkomponenten und Apex. In diese Anwendung können Sie nach Immobilien suchen und Immobilienmakler online kontaktieren.
Damit Sie sich ganz auf die Paketerstellung konzentrieren können, werden wir den Quellcode von DreamHouse LWC und die bereits erstellten Salesforce DX-Projektdateien herunterladen. In diesem Beispiel wird nur ein Paket verwendet, ein Salesforce DX-Projekt kann jedoch mehrere Pakete umfassen. Sie können verschiedene Pakete auf der Basis der Verzeichnisstruktur isolieren, können jedoch Komponenten gemeinsam nutzen, wo dies sinnvoll ist.
Wenn Sie ein Paket für diese Anwendung erstellen, können Sie es im Verlauf des Entwicklungslebenszyklus ganz leicht in Testorganisationen, UAT-Sandboxes und Produktionsorganisationen installieren.
Wir behandeln hier die einzelnen Schritte des ganzen Prozesses und verwenden dabei die Tools, die speziell für die Paketentwicklung konzipiert wurden.
Holen wir uns zunächst den Quellcode für die Anwendung "DreamHouse Lightning Web Components (LWC)".
Wechseln Sie in einem Befehlsfenster zu dem Verzeichnis, in dem Sie den Quellcode ablegen möchten, und führen Sie dann diesen Befehl aus.
git clone https://github.com/trailheadapps/dreamhouse-lwc.git
Der Befehl "git clone" erstellt unter Verwendung der Salesforce-DX-Projektstruktur den Ordner "dreamhouse-lwc" und enthält eine DX-Projektdatei und Definitionsdatei für Testorganisationen. Da das Repository "DreamHouse LWC" laufend aktualisiert wird, sollten Sie sich keine Gedanken machen, wenn Ihre Version des Projekts etwas anders aussieht.

Konfigurieren Ihres Pakets
- Your Trailhead Playground is also your Dev Hub org. To create a package, we need to first authorize to your Dev Hub org, and log in to it.
sf org login web --set-default-dev-hub --alias DevHub
- In the command window, let’s double check that the Dev Hub org is connected.
sf org listThe output of this command lists any org that you’re connected to, including Dev Hub, Trailhead Playgrounds, and scratch orgs. The (D) indicates your default Dev Hub org.=== Orgs ALIAS USERNAME ORG ID CONNECTED STATUS ─── ────────── ─────────────────────────────── ────────────────── ──────────────── (D) DevHub myDevHub@example.com 00DB0000000Ige5MAC Connected MyTP myName@mindful-raccoon-8184t4.com 00D6A000000fH8CUAU Connected TestingOrg name@example.com 00D4x000006sFonEAE Connected ALIAS USERNAME ORG ID EXPIRATION DATE ──────── ─────────────────── ────────────────── ──────────────── Scratch1 test@example.com 00DZ000000N8ItoMAF 2021-02-24 - Wechseln Sie auf Ihrem Computer zum Verzeichnis "dreamhouse-lwc".
- Öffnen Sie "sfdx-project.json" in Ihrem bevorzugten Texteditor und notieren Sie sich die sourceApiVersion-Nummer.
- DreamHouse LWC is an open-source project with many contributors. To ensure that you can successfully complete the challenge, replace the contents of the sfdx-project.json file with the following code.
{ "packageDirectories": [ { "path": "force-app", "default": true } ], "namespace": "", "sfdcLoginUrl": "https://login.salesforce.com", "sourceApiVersion": "61.0" } - Stellen Sie sicher, dass die sourceApiVersion-Nummer im Codeausschnitt mit der Versionsnummer aus der Originaldaten übereinstimmt, die Sie sich notiert haben. Sollte dies nicht der Fall sein, ändern Sie die sourceApiVersion-Nummer.
Warum verwenden wir bei diesem Beispiel keinen Namespace?
Ein Paket-Namespace ist für freigeschaltete Pakete zwar nicht zwingend notwendig, hilft jedoch, die Paketkomponenten zu organisieren. Da für Namespaces jedoch einige zusätzliche Einrichtungsschritte und Vorüberlegungen notwendig sind, verwenden wir sie in dieser Einheit nicht.
Erstellen des Pakets
Beim Kopieren der Anwendung DreamHouse LWC aus GitHub haben Sie alle Quelldateien in Ihr Projektverzeichnis geladen. Sie können jetzt ohne viel Tamtam das Basispaket erstellen.
Dieser Abschnitt enthält den Workflow für die Erstellung eines Pakets unter Verwendung des Beispiel-Repositorys "DreamHouse LWC".
- Wechseln Sie über ein Terminal oder eine Eingabeaufforderung zum Verzeichnis "dreamhouse-lwc".
- Create an unlocked package without a namespace, and supply the alias or username for your Dev Hub org if it’s not already set as the default:
sf package create --name dreamhouse --description "My Package" --package-type Unlocked --path force-app --no-namespace --target-dev-hub DevHub
- --name ist der Paketname. Dieser Name ist ein Alias, den Sie bei der Ausführung nachfolgender Paketerstellungsbefehle verwenden können.
- --path ist das Verzeichnis, das den Inhalt des Pakets enthält.
- --packagetype gibt an, welche Art von Paket Sie erstellen; in diesem Fall ist es ein freigeschaltetes Paket.
- Open sfdx-project.json. Boom! In packageDirectories, you can see the package name that you defined, with placeholders for the version name and version number. The command also creates a packageAliases section, which maps the package name (alias) to its corresponding package ID (0Ho).
{ "packageDirectories": [ { "path": "force-app", "default": true, "package": "dreamhouse", "versionName": "ver 0.1", "versionNumber": "0.1.0.NEXT" } ], "namespace": "", "sfdcLoginUrl": "https://login.salesforce.com", "sourceApiVersion": "61.0", "packageAliases": { "dreamhouse": "0Hoxxx" } }
Erstellen einer Testorganisation zum Testen Ihrer Paketversion
Wir erstellen jetzt eine Testorganisation mit dem Alias "MyScratchOrg", in der das freigeschaltete Paket installiert werden soll. Das Testen in einer Testorganisation ist eine praktische Methode, die Einheitentestphase des Lebenszyklus der Paketentwicklung durchzuführen.
sf org create scratch --definition-file config/project-scratch-def.json --duration-days 30 --alias MyScratchOrg --target-dev-hub DevHub
Dieser Befehl verwendet die Standarddefinition für Testorganisationen, die eine Developer Edition-Testorganisation erstellt, deren Edition Ihrem Trailhead Playground entspricht. Wie Sie sehen, ist die Dauer auf 30 Tage festgelegt, was Ihnen ausreichend Zeit für den Abschluss Ihrer Arbeit innerhalb eines Entwicklungssprints (bzw. für den Abschluss dieses Trailhead-Moduls) gibt.
Erstellen und Installieren der Paketversion in Ihrer Testorganisation
Wenn Sie bereit sind, das Paket zu veröffentlichen, erstellen Sie eine Momentaufnahme davon, also die sogenannte Paketversion. Die Installation der Paketversion ähnelt der Verteilung von Metadaten. Denken Sie daran: Nach der Erstellung fungiert die Paketversion als unveränderliches Artefakt, das eine bestimmte Menge an Metadaten enthält.
- Öffnen Sie die Datei sfdx-project.json in Ihrem bevorzugten Texteditor, um die Paketversionsoptionen zu ändern.
- Change the versionName to Version 1.0, and the versionNumber to 1.0.0.NEXT. The force-app directory is the default (and only) package directory, so any source included in it becomes part of the package. Once updated, the sfdx-project.json file looks like this:
{ "packageDirectories": [ { "path": "force-app", "default": true, "package": "dreamhouse", "versionName": "Version 1.0", "versionNumber": "1.0.0.NEXT" } ], "namespace": "", "sfdcLoginUrl": "https://login.salesforce.com", "sourceApiVersion": "61.0", "packageAliases": { "dreamhouse": "0Hoxxx" } } - Speichern Sie die Datei sfdx-project.json.
- In the dreamhouse-lwc directory, create the package version, which associates the metadata with the package.
The Apex code in unlocked packages must meet a minimum 75% code coverage requirement, before the package can be installed in a production org. We didn’t calculate code coverage in this example, because we know this sample Dreamhouse LWC repo doesn’t have enough Apex test coverage.sf package version create --package dreamhouse --installation-key test1234 --wait 10 --target-dev-hub DevHub
- -p ist der Paketalias, der der Paket-ID zugeordnet ist.
- -d ist das Verzeichnis, das den Inhalt des Pakets enthält.
- -k ist der Installationsschlüssel, der Ihr Paket davor schützt, von Unbefugten installiert zu werden.
- It’s normal for the package version creation process to take several minutes. You see status messages that tell you what’s going on. When the package version creation is complete, you see this message.
Successfully created the package version [08cxxx]. Subscriber Package Version Id: 04txxx. Package Installation URL: https://login.salesforce.com/packaging/installPackage.apexp?p0=04txxx As an alternative, you can use the "sf package install" command.
- Notice that the packageAliases section in sfdx-project.json has a new entry.
"packageAliases": { "dreamhouse": "0Hoxxx", "dreamhouse@1.0.0-1": "04txxx" } - Use the package version alias to install the package version in the scratch org that you created earlier.It can take several minutes for a newly created package version to be available in the scratch org. The installation begins once the package version is available. When the package install is complete, you see this message.
sf package install --wait 10 --publish-wait 10 --package dreamhouse@1.0.0-1 --installation-key test1234 --no-prompt --target-org MyScratchOrg
Successfully installed package [04t3XXX] - After the package is installed, open the scratch org to view the package.
sf org open --target-org MyScratchOrg
- Geben Sie in Setup im Feld "Schnellsuche" den Text "Installierte Pakete" ein und wählen Sie dann Installierte Pakete aus.

Da es sich um ein freigeschaltetes Paket handelt, können Sie Änderungen direkt in der Testorganisation vornehmen, anschließend die aktualisierten Metadaten herunterladen und dann eine neue Paketversion erstellen. Doch vorerst bietet Ihnen die Anwendung DreamHouse LWC alles Nötige, sodass wir fortfahren und das Paket veröffentlichen können.
Veröffentlichen der Paketversion
Ein Feature, das wir noch nicht besprochen haben, ist der Paketstatus. Wenn Sie Pakete zu Anfang erstellen, haben Pakete Beta-Status. Beta-Pakete können nicht in Produktionsorganisationen installiert werden. Dies ist ein Schutzmechanismus, der sicherstellen soll, dass die zu veröffentlichende Paketversion auch produktionsreif ist. Wenn Sie sicher sind, dass eine Version auf die Welt losgelassen werden kann, können Sie die zu veröffentlichende Paketversion hochstufen.
Das Beispiel-Repository "Dreamhouse LWC", das wir in dieser Einheit verwenden, entwickelt sich weiter und weist eventuell nicht genügend Apex-Tests auf, um die Anforderung einer Codeabdeckung von 75 % zu erfüllen. Wir überspringen also die Heraufstufung und verwenden weiterhin die von Ihnen erstellte Beta-Paketversion.
So sieht der Befehl zur Heraufstufung der Paketversion aus. Wenn Sie diesen Befehl jetzt ausprobieren, erhalten Sie jedoch eine Fehlermeldung.
sf package version promote --package dreamhouse@1.0.0-1 --target-dev-hub DevHub
Installieren der Paketversion in einer Organisation
Schließlich und endlich installieren Sie die Paketversion in Ihrer Organisation. Nicht vergessen: Sie können Beta-Paketversionen in Testversionen, Sandbox-Organisationen und Trailhead Playgrounds (DE-Organisationen) installieren. Eine veröffentlichte Version kann dagegen in jeder Organisation installiert werden. Normalerweise installieren Sie in dieser Phase die Paketversion in einer Sandbox. Für diese Übung werden wir das Paket jedoch in Ihrem Trailhead Playground installieren.
- To install the package version in to your Trailhead playground, you must first add it to your list of authorized orgs.
you must first add it to your list of authorized orgs.We suggest creating an alias for the Trailhead Playground, in this example, MyTP. Once you log in to an org, the CLI remembers your credentials. All you need to do is remember the org’s alias when issuing subsequent commands. If you don’t know the username and password for your Trailhead Playground, see Getting Your Username and Resetting Your Password.sf org login web --alias MyTP
- Install the package version in the Trailhead playground.
sf package install --wait 10 --publish-wait 10 --package dreamhouse@1.0.0-1 --installation-key test1234 --no-prompt --target-org MyTP
- Open your Trailhead playground.
sf org open --target-org MyTP
- Geben Sie in Ihrem Trailhead Playground unter Setup im Feld "Schnellsuche" den Text "Installierte Pakete" ein und wählen Sie dann Installierte Pakete aus. Sie erhalten außerdem eine E-Mail, die bestätigt, dass Sie das freigeschaltete Paket erfolgreich installiert haben.
- Klicken Sie auf dreamhouse und dann auf Komponenten anzeigen.

- Suchen und wählen Sie im App Launcher die Anwendung DreamHouse aus und probieren Sie einige ihrer Funktionen aus.
Ressourcen
