Specifica le dipendenze in Node.js
Una funzione può utilizzare moduli Node.js esterni e locali
e i dati di Google Cloud. Le dipendenze in Node.js vengono gestite con npm ed espresse in un
file di metadati denominato package.json
. I runtime Node.js delle funzioni Cloud Run supportano l'installazione utilizzando npm, yarn o pnpm.
Per specificare una dipendenza per la funzione, aggiungila al file package.json
.
In questo esempio, una dipendenza è elencata nel file package.json
:
{ "dependencies": { "escape-html": "^1.0.3" } }
La dipendenza viene quindi importata nella funzione:
Functions Framework è una dipendenza obbligatoria per tutte le funzioni. Sebbene Cloud Run funzioni lo installi per tuo conto quando viene creata la funzione, ti consigliamo includerla come dipendenza esplicita per maggiore chiarezza.
Se la funzione si basa su dipendenze private, ti consigliamo di
esegui il mirroring di functions-framework
nel tuo registro privato. Includi lo stato
functions-framework
come dipendenza dalla tua funzione per evitare di installare il componente
dalla rete internet pubblica.
Utilizzo di npm
per installare i moduli Node.js in locale
Il modo più semplice per installare un modulo Node.js localmente è utilizzare l'npm install
nella cartella contenente la funzione. Ad esempio,
questo comando aggiunge il modulo uuid
:
npm install uuid
che combina due passaggi:
- Contrassegna l'ultima versione del modulo come dipendenza nel tuo
package.json
. Questo è molto importante: Cloud Run funziona solo moduli di installazione dichiarati nel tuo filepackage.json
. - Il modulo viene scaricato nella directory
node_modules
. In questo modo, puoi utilizzare il modulo durante lo sviluppo locale.
Se npm non è installato sulla macchina, get npm.
Configurazione delle dipendenze del deployment
Puoi installare le dipendenze di produzione per Gestione dei partner di rete, Yarn o Pnpm:
NPM
Quando esegui il deployment della funzione, Cloud Run Functions installa le dipendenze
dichiarata nel file package.json
utilizzando
Comando npm install
:
npm install --production
Filato
Nel runtime Node.js 8 e versioni successive, se esiste un file yarn.lock
,
Le funzioni Cloud Run utilizzano invece
Comando yarn install
:
yarn install --production
PNPM
Nel runtime Node.js 8 e versioni successive, se esiste un file pnpm-lock.yaml
,
Le funzioni Cloud Run utilizzano invece
Comando pnpm install
:
pnpm install
Esecuzione di passaggi di build personalizzati durante il deployment
Dopo il deployment, puoi eseguire una
durante il processo di compilazione della funzione aggiungendo un'istruzione
Script gcp-build
nel file package.json
.
Quando viene eseguito questo script, le dipendenze in dependencies
e
devDependencies
campi del file package.json
sono disponibili. Dopo il giorno
eseguendo il passaggio di build personalizzato, Cloud Run Functions rimuove
rigenera la cartella node_modules
installando solo
delle dipendenze dichiarate nel campo dependencies
del file package.json
.
Se in package.json
non è presente uno script gcp-build
, Cloud Run funziona
si limita a installare le dipendenze di produzione.
Utilizzo dei pacchetti di sistema
Il runtime Node.js include anche una serie di pacchetti di sistema nell'ambiente di esecuzione. Se la funzione utilizza una dipendenza che richiede un pacchetto non elencato, puoi richiedi un pacco.
Inclusione di moduli Node.js locali
Puoi anche includere moduli Node.js locali nella funzione. Puoi
ottenere questo risultato dichiarando il modulo in package.json
utilizzando il
prefisso file:
. Nella
nell'esempio seguente, mymodule
si riferisce al nome del modulo e mymoduledir
è
nella directory contenente il modulo:
{ "dependencies": { "mymodule": "file:mymoduledir" } }
Il codice per questo modulo locale deve essere archiviato in una posizione diversa dalla
node_modules
all'interno della directory principale della funzione.
Caricamento dei moduli Node.js
Utilizzare Node.js
require()
per caricare qualsiasi modulo Node.js che hai installato. Puoi utilizzare anche
require()
per importare i file locali di cui esegui il deployment insieme alla funzione.
Utilizzo di 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.0 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 di funzioni Cloud Run
, 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 tuo .npmrc
senza
generando credenziali aggiuntive. Ad esempio:
@SCOPE:registry=https://REGION_ID-npm.pkg.dev/PROJECT_ID/REPOSITORY_NAME
//REGION_ID-npm.pkg.dev/PROJECT_ID/REPOSITORY_NAME:always-auth=true
Questo approccio funziona anche per il gestore di pacchetti Yarn v1.
Se utilizzi Yarn v2 o versioni successive, devi elencare solo Artifact Registry
repository in .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 registry npm privato. Imposta questo campo se il repository è ospitato con
npmjs.org
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}
, chenpm
sostituisce con il valore effettivo del token indicato in 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.
Crea la tua funzione con dipendenze del fornitore
Le dipendenze del fornitore sono quelle il cui codice sorgente è incluso direttamente nel pacchetto di codice sorgente e viene ricostruito insieme al tuo codice. Puoi creare dipendenze Node.js fornite dal fornitore e saltare l'installazione durante il deployment Variabile di ambiente di build GOOGLE_VENDOR_NPM_DEPENDENCIES.
Prerequisiti per le dipendenze del fornitore
Assicurati di avere una funzione funzionante con tutte le dipendenze che vuoi che il fornitore definisca nel file
package.json
.Installa queste dipendenze in locale eseguendo:
npm install
Rimuovi
node_modules
dal file .gcloudignore nella directory di lavoro.Esegui il deployment della funzione, assicurandoti che la tua versione locale di Node.js sia la stessa di specificato durante il deployment.
Esegui il deployment della funzione e delle dipendenze del fornitore con seguente comando:
gcloud functions deploy FUNCTION_NAME \ --runtime RUNTIME_NAME \ --set-build-env-vars GOOGLE_VENDOR_NPM_DEPENDENCIES=true
Sostituisci:
- FUNCTION_NAME: il nome della funzione di Cloud Run stai eseguendo il deployment
- RUNTIME_NAME: il nome del runtime Node.js in cui eseguire la funzione di cui hai eseguito il deployment. Deve essere uguale Versione Node.js utilizzata nello sviluppo locale ambiente
Il pacchetto del framework Functions è una dipendenza obbligatoria per le funzioni. Per velocizzare le build, consigliamo il fornitore di questo pacchetto. In caso contrario, scaricati e installati quando viene creata la funzione.
Se specifichi un motore npm nel file package.json, la versione di npm specificata viene scaricata in fase di compilazione. Per eliminare questo comportamento, rimuovi dal file package.json.