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.
rispetto alla 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 della tua 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ò avere un vincolo di semver. La libreria specifica che utilizziamo per i buildpack Node.js è Masterminds/semver - Evita di utilizzare identificatori maggiori 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
- Documentazione aggiuntiva sull'opzione di configurazione
engines.node
inpackage.json
è disponibile nella documentazione ufficiale di Gestione dei partner di rete nell'argomento motori - 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
- Gestione dei pacchetti predefinita è il gestore di pacchetti predefinito.
- Quando possibile, utilizza
package-lock.json
per migliorare le prestazioni della cache. - Per impostazione predefinita sono installate solo le dipendenze di produzione.
- Puoi specificare la sezione della versione npm utilizzando il campo
engines.npm
inpackage.json
file.
Utilizzo del filato
- Viene invece utilizzato il Yarn quando includi il file
yarn.lock
nel tuo progetto. - Puoi specificare la versione del filato da utilizzare nel campo
engines.yarn
del tuopackage.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 pratico, vedi sample-node-pnpm dell'app.
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 versione 2 o successiva come gestore di pacchetti, questo file è denominato
.yarnrc.yml
.
Moduli privati da Artifact Registry
Un repository di pacchetti Node.js di Artifact Registry
puoi ospitare moduli privati per la tua funzione. Quando esegui il deployment di
, il processo di compilazione genera automaticamente le credenziali Artifact Registry
per l'account di servizio Cloud Build.
Devi solo elencare il repository Artifact Registry nel file .npmrc
quando si utilizza Gestione dei partner di rete o Yarn versione 1. Ad esempio, se 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 versione 2 o successiva, devi elencare solo Artifact Registry
repository nel tuo 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 da altri repository
La documentazione npm spiega come creare impostazioni di sola lettura personalizzate.
di accesso ai token di accesso. È sconsigliato utilizzare il file .npmrc
creato in casa
perché contiene un token di lettura/scrittura. Le autorizzazioni di scrittura non sono
necessarie durante il deployment e potrebbe
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 dominio
npm. Ad esempio, se l'host del repository è
npmjs.org
, imposta questo campo aregistry.npmjs.org
. AUTH_TOKEN: il token di autorizzazione per il registro 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
. Consulta il tutorial sulla gestione dei partner di rete sui moduli privati per maggiori dettagli sul token di autenticazione NPM.
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 build utilizzando
GOOGLE_NODE_RUN_SCRIPTS
o gcp-build
nel tuo
package.json
file.
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 passi di build personalizzati, sia dependencies
Devi installare prima devDependencies
nel file package.json
prima dell'esecuzione di qualsiasi script o comando. 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 build
controllare quali script vengono eseguiti. 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
al file package.json
viene eseguita solo
npm run gcp-build
, che sostituisce il valore predefinito
comportamento degli utenti. Puoi specificare uno o più comandi oppure specificare
stringa vuota per impedire l'esecuzione di qualsiasi comando, come "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 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 il seguente 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 creazione. impostato per 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 e viene eseguito nell'ordine
elencare 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 al valore predefinito npm run build
di
è in esecuzione, specifichi 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.