Versionen von Node.js angeben
Das Buildpacks-Projekt unterstützt die aktuellen und Active LTS-Releases von Node.js. Ältere Versionen von Node.js sind verfügbar, werden jedoch möglicherweise nicht aktiv vom Projekt verwaltet.
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 ist, 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 Functions 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.
Benutzerdefinierte Build-Schritte während der Bereitstellung ausführen
Standardmäßig wird npm run build
ausgeführt, wenn in Ihrer package.json
-Datei ein Skript angegeben ist. Sie können jedoch benutzerdefinierte Build-Schritte angeben, um das Standardverhalten zu überschreiben und nur die Skripts auszuführen, die Sie während des Builds verwenden möchten. Sie können die Build-Schritte mithilfe der 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 für gcp-build
in Ihrer package.json
angegebenen Werte überschreibt.
Wenn Sie benutzerdefinierte Build-Schritte konfigurieren, werden standardmäßig sowohl dependencies
als auch devDependencies
in Ihrer package.json
-Datei installiert, bevor Skripts oder Befehle ausgeführt werden. Sie können das Standardverhalten mit der Umgebungsvariable NODE_ENV
überschreiben.
GOOGLE_NODE_RUN_SCRIPTS
verwenden
Sie können die Umgebungsvariable GOOGLE_NODE_RUN_SCRIPTS
an den Build übergeben, um zu steuern, welche Skripts 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 der Datei package.json
wird nur npm run gcp-build
ausgeführt, was bedeutet, dass das Standardverhalten überschrieben wird. 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, führt das Buildpack npm start
aus.
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; für npm install
festgelegt.
Beispiel: NODE_ENV=development
installiert sowohl dependencies
als auch devDependencies
, die in package.json
angegeben sind.
GOOGLE_NODE_RUN_SCRIPTS
Gibt eine geordnete Liste von npm-Skripts aus package.json
an, die nach der Installation von Abhängigkeiten ausgeführt werden sollen. Die Liste muss durch Kommas getrennt sein und in der Reihenfolge ausgeführt werden, in der Sie die einzelnen Skripts auflisten.
Wenn Sie GOOGLE_NODE_RUN_SCRIPTS
angeben, werden nur die Skripts ausgeführt, die Sie auflisten. Wenn Sie beispielsweise verhindern möchten, dass die 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.