Specifica le versioni di Node.js
Il progetto buildpacks fornisce supporto per le release LTS correnti e attive di Node.js. Sono disponibili versioni precedenti di Node.js, ma potrebbero non essere gestite attivamente dal progetto.
Uso: package.json
Puoi specificare la versione Node.js della tua applicazione durante il deployment configurando il campo engines.node
in package.json
. Per configurare il buildpack in modo che utilizzi la versione più recente di Node.js v16 durante il deployment della tua app, puoi utilizzare i seguenti valori in package.json
:
"engines": {
"node": "16.x.x"
}
Uso: GOOGLE_NODEJS_VERSION
È anche possibile specificare la versione Node.js tramite la variabile di ambiente GOOGLE_NODEJS_VERSION
.
Se sono impostate entrambe le configurazioni, il valore GOOGLE_NODEJS_VERSION
ha la precedenza sulla proprietà engines.node
. Se non viene fornito alcun valore, viene utilizzata la versione LTS più recente di Node.js
Per configurare il buildpack in modo che utilizzi Node.js 16 durante il deployment dell'app:
pack build --builder=gcr.io/buildpacks/builder \
sample-functions-framework-node \
--env GOOGLE_NODEJS_VERSION=16.x.x
Puoi anche utilizzare un descrittore di progetto project.toml
per codificare
la variabile di ambiente insieme ai file di progetto. Vedi le istruzioni su
creando l'applicazione con le variabili di ambiente.
Suggerimenti
- Il campo
engines.node
può accettare una limitazione semver. La libreria specifica che utilizziamo per i buildpack Node.js è Masterminds/semver - Evita di utilizzare specificatori maggiore di (>) in
engines.node
- Quando esegui il deployment dell'applicazione nell'ambiente standard di App Engine, la proprietà
engines.node
deve essere compatibile con il runtime specificato inapp.yaml
- Ulteriori informazioni sull'opzione di configurazione
engines.node
inpackage.json
sono disponibili nella documentazione ufficiale di NPM nell'argomento engine - Quando esegui il deployment di una funzione su funzioni Cloud Run, la proprietà
engines.node
deve essere compatibile con il runtime utilizzato per eseguire il deployment della funzione
Installazione delle dipendenze
Utilizzo della gestione dei partner di rete
- NPM è il gestore dei pacchetti predefinito.
- Ove possibile, utilizza
package-lock.json
per migliorare il rendimento della cache. - Per impostazione predefinita sono installate solo le dipendenze di produzione.
- Puoi specificare la sezione della versione npm utilizzando il campo
engines.npm
nelpackage.json
file.
Utilizzo di Yarn
- Quando includi il file
yarn.lock
nel progetto, viene utilizzato Yarn. - Puoi specificare la versione del filato da utilizzare nel campo
engines.yarn
delpackage.json
file. - Supportiamo la modalità PnP di Yarn2 se il tuo progetto include un
.yarn/cache
.
Utilizzo di Pnpm
- Quando includi il file
pnpm-lock.yaml
nella cartella , viene utilizzato Pnpm progetto. - Puoi specificare una versione di pnpm nel campo
engines.pnpm
del tuopackage.json
file. - Per un esempio funzionante, consulta l'app sample-node-pnpm.
Utilizzo dei moduli privati
Puoi utilizzare un modulo di gestione dei partner privato fornendo le impostazioni per l'autenticazione con
al registro in un file .npmrc
nella directory della funzione. Se utilizzi
Yarn 2 o versioni successive come gestore dei pacchetti, questo file si chiama
.yarnrc.yml
.
Moduli privati da Artifact Registry
Un repository di pacchetti Node.js di Artifact Registry può ospitare moduli privati per la tua funzione. Quando esegui il deployment
, il processo di compilazione genera automaticamente le credenziali Artifact Registry
per l'account di servizio Cloud Build.
Devi elencare il repository Artifact Registry nel file .npmrc
solo se utilizzi NPM o Yarn versione 1. Ad esempio, quando utilizzi NPM o Yarn versione 1:
@SCOPE:registry=https://REGION_ID-npm.pkg.dev/PROJECT_ID/REPOSITORY_NAME
//REGION_ID-npm.pkg.dev/PROJECT_ID/REPOSITORY_NAME:always-auth=true
Se utilizzi Yarn 2 o versioni successive, devi solo elencare il repository Artifact Registry nel file .yarnrc.yml
senza credenziali aggiuntive.
Ad esempio:
npmScopes:
SCOPE:
npmRegistryServer: https://REGION_ID-npm.pkg.dev/PROJECT_ID/REPOSITORY_NAME
npmAlwaysAuth: true
Moduli privati di altri repository
La documentazione di npm spiega come creare token di accesso personalizzati di sola lettura. Sconsigliamo di utilizzare il file .npmrc
creato nella directory home perché contiene un token di lettura/scrittura. Le autorizzazioni di scrittura non sono obbligatorie durante il deployment e potrebbero rappresentare un rischio per la sicurezza.
Non includere il file .npmrc
se non utilizzi repository privati.
in quanto possono aumentare i tempi
di deployment delle tue funzioni.
Formato file
Se utilizzi un file .npmrc
per impostare un token di autenticazione personalizzato, questo dovrebbe includere
la riga mostrata di seguito.
//REGISTRY_DOMAIN/:_authToken=AUTH_TOKEN
Sostituisci:
- REGISTRY_DOMAIN: il nome di dominio del tuo registry npm privato. Ad esempio, se l'host del repository è
npmjs.org
, imposta questo campo aregistry.npmjs.org
. AUTH_TOKEN: il token di autorizzazione per il tuo registry npm. Può essere il valore di testo letterale del token o la stringa di testo
${NPM_TOKEN}
, che il comandonpm
sostituisce con il valore effettivo del token indicato nella completamente gestito di Google Cloud.Puoi impostare la variabile di ambiente
$NPM_TOKEN
con--set-build-env-vars
all'argomento Comandogcloud functions deploy
. Per ulteriori dettagli sul token di autenticazione NPM, consulta il tutorial di NPM sui moduli privati.
Esecuzione di passaggi di build personalizzati durante il deployment
Per impostazione predefinita, npm run build
viene eseguito se viene specificato uno script nel
package.json
file. Tuttavia, puoi specificare passi di build personalizzati
il comportamento predefinito ed eseguire solo gli script desiderati
durante la creazione. Puoi controllare i passaggi di compilazione utilizzando la variabile di ambiente GOOGLE_NODE_RUN_SCRIPTS
o gcp-build
nel file package.json
.
Puoi utilizzare un solo metodo. Tieni presente che GOOGLE_NODE_RUN_SCRIPTS
di una variabile di ambiente ha la precedenza e sostituisce qualsiasi elemento specificato
per gcp-build
in package.json
.
Per impostazione predefinita, quando configuri i passaggi di compilazione personalizzati, vengono installati prima sia dependencies
sia
devDependencies
nel file package.json
prima che vengano eseguiti script o comandi. Per eseguire l'override del comportamento predefinito,
puoi utilizzare la variabile di ambiente NODE_ENV
.
Uso: GOOGLE_NODE_RUN_SCRIPTS
Puoi passare la variabile di ambiente GOOGLE_NODE_RUN_SCRIPTS
alla compilazione per controllare gli script da eseguire. Puoi specificare uno o più script oppure
passa una variabile di ambiente vuota per impedire che il comportamento predefinito
in esecuzione, ad esempio GOOGLE_NODE_RUN_SCRIPTS=
. Per i dettagli completi, vedi
Variabili di ambiente.
Uso: package.json
L'aggiunta di gcp-build
nel file package.json
esegue solo npm run gcp-build
, il che significa che sostituisce il comportamento predefinito. Puoi specificare uno o più comandi oppure una stringa vuota per impedire l'esecuzione di qualsiasi comando, ad esempio "gcp-build":""
.
"scripts": {
...
"gcp-build": "npm run lint && npm run build"
...
}
Punto di ingresso dell'applicazione
Il buildpack Node.js eseguirà il comando specificato nel campo scripts.start
di package.json
.
Se scripts.start
non è impostato, il buildpack eseguirà npm start
.
Ti consigliamo di utilizzare un file Procfile perché rimuove npm
o yarn
dal percorso.
Variabili di ambiente
Puoi impostare le variabili di ambiente per configurare le build dell'immagine container.
Il buildpack Node.js supporta le seguenti variabili di ambiente per personalizzare il contenitore.
NPM_CONFIG_<key>
Consulta la documentazione.
Esempio: NPM_CONFIG_FLAG=value
trasmette -flag=value
ai comandi npm
.
NODE_ENV
Specifica l'ambiente di sviluppo durante la compilazione. Impostato su npm install
.
Esempio: NODE_ENV=development
installa sia dependencies
sia devDependencies
specificati in package.json
.
GOOGLE_NODE_RUN_SCRIPTS
Specifica un elenco ordinato di script npm da package.json
da eseguire dopo
installare le dipendenze. L'elenco deve essere separato da virgole ed eseguito nell'ordine in cui elenchi ogni script.
Se specifichi GOOGLE_NODE_RUN_SCRIPTS
, vengono visualizzati solo gli script da te elencati
vengono eseguiti tutti i test delle unità. Ad esempio, se vuoi impedire l'esecuzione di npm run build
predefinito, specifica la variabile di ambiente senza un valore.
Esempi:
GOOGLE_NODE_RUN_SCRIPTS=lint,build
eseguenpm run lint
e poinpm run build
.GOOGLE_NODE_RUN_SCRIPTS=
non esegue script.