Abhängigkeiten in Node.js angeben
Eine Funktion kann externe Node.js-Module sowie lokale Daten verwenden. Abhängigkeiten in Node.js werden mit npm verwaltet und in einer Metadatendatei namenspackage.json
ausgedrückt. Cloud Functions-Node.js-Laufzeiten unterstützen im Allgemeinen die Installation mit npm oder yarn.
Zum Angeben einer Abhängigkeit für die Funktion fügen Sie diese der Datei package.json
hinzu.
In diesem Beispiel ist eine Abhängigkeit in der Datei package.json
enthalten:
{ "dependencies": { "escape-html": "^1.0.3" } }
Die Abhängigkeit wird dann in die Funktion importiert:
Node.js-Module mit npm
lokal installieren
Die einfachste Methode zum lokalen Installieren eines Node.js-Moduls besteht darin, den Befehl npm install
in dem Ordner zu verwenden, der die Cloud Functions-Funktion enthält. Mit dem folgenden Befehl wird beispielsweise das uuid
-Modul hinzugefügt:
npm install uuid
Im Befehl sind zwei Schritte kombiniert:
- Die neueste Version des Moduls wird als Abhängigkeit in der Datei
package.json
gekennzeichnet. Dies ist sehr wichtig, denn Cloud Functions installiert nur Module, die in der Dateipackage.json
deklariert sind. - Das Modul wird in das
node_modules
-Verzeichnis heruntergeladen. So können Sie das Modul beim lokalen Entwickeln verwenden.
Falls npm nicht auf Ihrem Computer installiert ist, besorgen Sie sich npm.
Bereitstellungsabhängigkeiten konfigurieren
Produktionsabhängigkeiten mit npm installieren
Wenn Sie Ihre Funktion bereitstellen, installiert Cloud Functions die in der Datei package.json
deklarierten Abhängigkeiten mit dem Befehl npm install
:
npm install --production
Wenn in der Laufzeit von Node.js 8 und höher eine yarn.lock
-Datei vorhanden ist, verwendet Cloud Functions stattdessen den Befehl yarn install
:
yarn install --production
Benutzerdefinierte Build-Schritte während der Bereitstellung ausführen
Nach der Bereitstellung können Sie während des Funktions-Build-Prozesses einen benutzerdefinierten Build-Schritt ausführen. Fügen Sie dazu ein gcp-build
-Skript in die Datei package.json
ein.
Wenn dieses Skript ausgeführt wird, sind die Abhängigkeiten in den Feldern dependencies
und devDependencies
der package.json
-Datei verfügbar. Nach dem Ausführen des benutzerdefinierten Build-Schritts wird der Ordner node_modules
von Cloud Functions entfernt und neu generiert. Dies geschieht, indem genau die Produktionsabhängigkeiten installiert werden, die im Feld dependencies
der package.json
-Datei deklariert sind.
Wenn in package.json
kein gcp-build
-Skript vorhanden ist, installiert Cloud Functions einfach Produktionsabhängigkeiten.
Systempakete verwenden
Die Node.js-Laufzeit enthält auch eine Reihe von Systempaketen in der Ausführungsumgebung. Wenn die Funktion eine Abhängigkeit verwendet, für die ein nicht aufgeführtes Paket erforderlich ist, können Sie ein Paket anfordern.
Lokale Node.js-Module einschließen
Sie können auch lokale Node.js-Module in Ihre Funktion einbinden. Deklarieren Sie dazu Ihr Modul in package.json
mit dem Präfix file:
. Im folgenden Beispiel steht mymodule
für den Modulnamen und mymoduledir
für das Verzeichnis, in dem das Modul enthalten ist:
{ "dependencies": { "mymodule": "file:mymoduledir" } }
Der Code für dieses lokale Modul sollte nicht im Ordner node_modules
im Stammverzeichnis der Funktion gespeichert werden.
Node.js-Module laden
Verwenden Sie die Node.js-Funktion require()
, um ein installiertes Node.js-Modul zu laden. Sie können auch die Funktion require()
verwenden, um lokale Dateien zu importieren, die Sie gemeinsam mit der Funktion bereitstellen möchten.
Private Module verwenden
Sie können ein privates npm-Modul verwenden. Geben Sie dazu Einstellungen für die Authentifizierung mit der Registry in einer .npmrc
-Datei im Verzeichnis der Funktion an.
Private Module aus Artifact Registry
In einem Artifact Registry Node.js-Package Repository können private Module für Ihre Funktion gehostet werden. Bei der Bereitstellung in Cloud Functions generiert der Build-Prozess automatisch Artifact Registry-Anmeldedaten für das Cloud Build-Dienstkonto.
Sie müssen nur das Artifact Registry-Repository in .npmrc
auflisten, ohne zusätzliche Anmeldedaten zu generieren. Beispiel:
@SCOPE:registry=https://REGION_ID-npm.pkg.dev/PROJECT_ID/REPOSITORY_NAME
//REGION_ID-npm.pkg.dev/PROJECT_ID/REPOSITORY_NAME:always-auth=true
Private Module aus anderen Repositories
Die npm-Dokumentation erläutert, wie benutzerdefinierte, schreibgeschützte Zugriffstoken erstellt werden. Wir raten davon ab, die im Basisverzeichnis erstellte .npmrc
-Datei zu verwenden, da sie ein Lese-/Schreibtoken enthält. Schreibberechtigungen sind während der Bereitstellung nicht erforderlich und können ein Sicherheitsrisiko darstellen.
Fügen Sie die .npmrc
-Datei nicht hinzu, wenn Sie keine privaten Repositories verwenden, da sie die Bereitstellungszeit für Ihre Funktionen erhöhen kann.
Dateiformat
Wenn Sie eine .npmrc
-Datei zum Festlegen eines benutzerdefinierten Auth-Tokens verwenden, sollte es die unten aufgeführte Zeile enthalten. Ersetzen Sie <YOUR_AUTH_TOKEN>
durch Ihr von NPM bereitgestelltes Authentifizierungstoken.
//registry.npmjs.org/:_authToken=<YOUR_AUTH_TOKEN>