Versionen von Node.js angeben
Das Buildpacks-Projekt unterstützt die aktuellen und Active LTS-Releases von Node.js. Ältere Releases von Node.js sind verfügbar, werden aber möglicherweise nicht aktiv vom Projekt gepflegt.
package.json verwenden
Um die Node.js-Version Ihrer Anwendung während der Bereitstellung anzugeben konfigurieren Sie das engines.node-Feld in package.json. Um das Buildpack so zu konfigurieren, dass es beim Bereitstellen Ihrer Anwendung die neueste Version von Node.js v16 verwendet, können Sie folgende Werte in Ihrem package.json verwenden:
"engines": {
"node": "16.x.x"
}
GOOGLE_NODEJS_VERSION verwenden
Es ist auch möglich, die Node.js-Version über die GOOGLE_NODEJS_VERSION-Umgebungsvariable anzugeben.
Wenn beide Konfigurationen festgelegt sind, hat der GOOGLE_NODEJS_VERSION-Wert Vorrang vor dem engines.node-Attribut. Wenn kein Wert angegeben wird, wird die neueste LTS-Version von Node.js verwendet.
So konfigurieren Sie den Buildpack zur Verwendung von Node.js 16 bei der Bereitstellen Ihrer Anwendung:
pack build --builder=gcr.io/buildpacks/builder \
sample-functions-framework-node \
--env GOOGLE_NODEJS_VERSION=16.x.x
Sie können auch den project.toml-Projektdeskriptor verwenden, um die Umgebungsvariable zusammen mit den Projektdateien zu codieren. Weitere Informationen finden Sie unter Anwendung mit Umgebungsvariablen erstellen.
Tipps
engines.nodekann eine semver-Einschränkung nutzen. Die spezifische Bibliothek, die wir für Node.js-Buildpacks verwenden, ist Masterminds/semver.- Vermeiden Sie die Verwendung von "größer als (>)"-Spezifizierern in
engines.node - Wenn Sie die Anwendung in der App Engine-Standardumgebung bereitstellen, sollte das
engines.node-Attribut mit der inapp.yamlangegebenen Laufzeit kompatibel sein. - Weitere Informationen zur
engines.node-Konfigurationsoption inpackage.jsonfinden Sie in der offiziellen NPM-Dokumentation unter dem Thema "Engines". - Wenn Sie eine Funktion in Cloud Run-Funktionen bereitstellen, sollte das
engines.node-Attribut mit der Laufzeit kompatibel sein, die zur Bereitstellung der Funktion verwendet wird.
Abhängigkeiten installieren
Mithilfe von npm:
- NPM ist der Standard-Paketmanager.
- Verwenden Sie nach Möglichkeit
package-lock.json, um die Cache-Leistung zu verbessern. - Standardmäßig werden nur Produktionsabhängigkeiten installiert.
- Sie können den npm-Versionsabschnitt mit dem
engines.npm-Feld in Ihrerpackage.json-Datei angeben.
Mithilfe von Yarn:
- Yarn wird stattdessen verwendet, wenn Sie die Datei
yarn.lockin Ihr Projekt aufnehmen. - Sie können die zu verwendende Yarn-Version im Feld
engines.yarnIhrerpackage.json-Datei angeben. - Wir unterstützen den Yarn2-PnP-Modus, wenn Ihr Projekt ein
.yarn/cacheenthält
Mithilfe von Pnpm:
- Pnpm wird stattdessen verwendet, wenn Sie die Datei
pnpm-lock.yamlin Ihr Projekt aufnehmen. - Sie können eine Version von pnpm im Feld
engines.pnpmIhrer Dateipackage.jsonangeben. - Ein funktionierendes Beispiel finden Sie in der Anwendung sample-node-pnpm.
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. Wenn Sie Yarn Version 2 oder höher als Paketmanager verwenden, heißt diese Datei .yarnrc.yml.
Private Module aus Artifact Registry
In einem Artifact Registry Node.js-Package Repository können private Module für Ihre Funktion gehostet werden. Wenn Sie eine Buildpacks-Funktion bereitstellen, generiert der Build-Prozess automatisch Artifact Registry-Anmeldedaten für das Cloud Build-Dienstkonto.
Sie müssen das Artifact Registry-Repository nur in der Datei .npmrc auflisten, wenn Sie NPM oder Yarn Version 1 verwenden. Wenn Sie beispielsweise NPM oder Yarn Version 1 verwenden:
@SCOPE:registry=https://REGION_ID-npm.pkg.dev/PROJECT_ID/REPOSITORY_NAME
//REGION_ID-npm.pkg.dev/PROJECT_ID/REPOSITORY_NAME:always-auth=true
Wenn Sie Yarn Version 2 oder höher verwenden, müssen Sie nur das Artifact Registry-Repository in Ihrer .yarnrc.yml-Datei ohne zusätzliche Anmeldedaten auflisten.
Beispiel:
npmScopes:
SCOPE:
npmRegistryServer: https://REGION_ID-npm.pkg.dev/PROJECT_ID/REPOSITORY_NAME
npmAlwaysAuth: 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.
//REGISTRY_DOMAIN/:_authToken=AUTH_TOKEN
Ersetzen Sie:
- REGISTRY_DOMAIN: der Domainname Ihrer privaten npm-Registry. Wenn der Repository-Host beispielsweise
npmjs.orgist, legen Sie dieses Feld aufregistry.npmjs.orgfest. AUTH_TOKEN: das Autorisierungstoken für Ihre npm-Registry. Dies kann entweder der Literaltextwert des Tokens oder der Textstring
${NPM_TOKEN}sein, den der Befehlnpmdurch den tatsächlichen Tokenwert aus der Umgebung ersetzt.Sie können die Umgebungsvariable
$NPM_TOKENmit dem Argument--set-build-env-varsauf den Befehlgcloud functions deployfestlegen. Weitere Informationen zum NPM-Authentifizierungstoken finden Sie in der NPM-Anleitung zu privaten Modulen.
Benutzerdefinierte Build-Schritte während der Bereitstellung ausführen
Standardmäßig wird npm run build ausgeführt, wenn in Ihrer package.json-Datei ein Script angegeben ist. Sie können stattdessen benutzerdefinierte Build-Schritte angeben, um das Standardverhalten zu überschreiben und nur die gewünschten Scripts während des Builds auszuführen. Sie können die Buildschritte entweder über die Umgebungsvariable GOOGLE_NODE_RUN_SCRIPTS oder gcp-build in der Datei package.json steuern.
Sie können nur eine Methode verwenden. Beachten Sie, dass die Umgebungsvariable GOOGLE_NODE_RUN_SCRIPTS Vorrang hat und alle Werte überschreibt, die für gcp-build in Ihrer package.json angegeben sind.
Wenn Sie benutzerdefinierte Build-Schritte konfigurieren, werden standardmäßig sowohl dependencies als auch devDependencies in der Datei package.json installiert, bevor Skripts oder Befehle ausgeführt werden. Wenn Sie das Standardverhalten überschreiben möchten, können Sie die Umgebungsvariable NODE_ENV verwenden.
GOOGLE_NODE_RUN_SCRIPTS verwenden
Sie können die Umgebungsvariable GOOGLE_NODE_RUN_SCRIPTS an den Build übergeben, um zu steuern, welche Scripts ausgeführt werden. Sie können ein oder mehrere Skripts angeben oder stattdessen eine leere Umgebungsvariable übergeben, um die Ausführung des Standardverhaltens zu verhindern, z. B. GOOGLE_NODE_RUN_SCRIPTS=. Ausführliche Informationen finden Sie unter Umgebungsvariablen.
package.json verwenden
Durch Hinzufügen von gcp-build in Ihrer package.json-Datei wird nur npm run gcp-build ausgeführt, d. h., das Standardverhalten wird überschrieben. Sie können einen oder mehrere Befehle angeben oder einen leeren String angeben, um zu verhindern, dass ein Befehl ausgeführt wird, z. B. "gcp-build":"".
"scripts": {
...
"gcp-build": "npm run lint && npm run build"
...
}
Anwendungseinstiegspunkt
Das Node.js-Buildpack führt den im scripts.start-Feld Ihres package.json angegebenen Befehls aus.
Wenn scripts.start nicht festgelegt ist, wird npm start vom Buildpack ausgeführt.
Wir empfehlen die Verwendung einer Procfile-Datei, da dann npm oder yarn aus dem Pfad entfernt werden.
Umgebungsvariablen
Sie können Umgebungsvariablen festlegen, um Builds Ihres Container-Images zu konfigurieren.
Das Node.js-Buildpack unterstützt folgende Umgebungsvariablen, um Ihren Container anzupassen
NPM_CONFIG_<key>
Beispiel: NPM_CONFIG_FLAG=value übergibt -flag=value an npm-Befehle.
NODE_ENV
Gibt die Entwicklungsumgebung während des Builds an, festgelegt für npm install.
Beispiel: NODE_ENV=development installiert sowohl das dependencies als auch das devDependencies, das in package.json angegeben ist.
GOOGLE_NODE_RUN_SCRIPTS
Hier wird eine sortierte Liste von npm-Scripts aus package.json angegeben, die nach der Installation von Abhängigkeiten ausgeführt werden sollen. Die Liste muss durch Kommas getrennt sein und die Scripts werden in der Reihenfolge ausgeführt, in der sie aufgeführt sind.
Wenn Sie GOOGLE_NODE_RUN_SCRIPTS angeben, werden nur die von Ihnen aufgelisteten Scripts ausgeführt. Wenn Sie beispielsweise verhindern möchten, dass das Standard-npm run build ausgeführt wird, geben Sie die Umgebungsvariable ohne Wert an.
Beispiele:
GOOGLE_NODE_RUN_SCRIPTS=lint,buildführtnpm run lintund dannnpm run buildaus.GOOGLE_NODE_RUN_SCRIPTS=führt keine Skripts aus.