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.node
kann 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.yaml
angegebenen Laufzeit kompatibel sein. - Weitere Informationen zur
engines.node
-Konfigurationsoption inpackage.json
finden 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.lock
in Ihr Projekt aufnehmen. - Sie können die zu verwendende Yarn-Version im Feld
engines.yarn
Ihrerpackage.json
-Datei angeben. - Wir unterstützen den Yarn2-PnP-Modus, wenn Ihr Projekt ein
.yarn/cache
enthält
Mithilfe von Pnpm:
- Pnpm wird stattdessen verwendet, wenn Sie die Datei
pnpm-lock.yaml
in Ihr Projekt aufnehmen. - Sie können eine Version von pnpm im Feld
engines.pnpm
Ihrer Dateipackage.json
angeben. - 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.org
ist, legen Sie dieses Feld aufregistry.npmjs.org
fest. AUTH_TOKEN: das Autorisierungstoken für Ihre npm-Registry. Dies kann entweder der Literaltextwert des Tokens oder der Textstring
${NPM_TOKEN}
sein, den der Befehlnpm
durch den tatsächlichen Tokenwert aus der Umgebung ersetzt.Sie können die Umgebungsvariable
$NPM_TOKEN
mit dem Argument--set-build-env-vars
auf den Befehlgcloud functions deploy
festlegen. 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,build
führtnpm run lint
und dannnpm run build
aus.GOOGLE_NODE_RUN_SCRIPTS=
führt keine Skripts aus.