Specifica delle dipendenze in Node.js
A una funzione è consentito utilizzare moduli Node.js esterni e dati locali. Le dipendenze in Node.js vengono gestite con npm ed espresse in un file di metadati chiamatopackage.json
. In genere, i runtime Node.js di Cloud Functions supportano l'installazione tramite npm o yarn.
Per specificare una dipendenza per la funzione, aggiungila al file package.json
.
In questo esempio, nel file package.json
è elencata una dipendenza:
{ "dependencies": { "escape-html": "^1.0.3" } }
La dipendenza viene quindi importata nella funzione:
Utilizzo di npm
per installare i moduli Node.js in locale
Il modo più semplice per installare un modulo Node.js in locale è utilizzare il comando npm install
nella cartella contenente la funzione Cloud Functions. Ad esempio, il seguente comando aggiunge il modulo uuid
:
npm install uuid
Questo passaggio prevede due passaggi:
- Contrassegna l'ultima versione del modulo come dipendenza nel tuo file
package.json
. Questo è molto importante: Cloud Functions installa solo moduli dichiarati nel tuo filepackage.json
. - Scarica il modulo nella directory
node_modules
. In questo modo, puoi utilizzare il modulo durante lo sviluppo in locale.
Se non hai installato npm sulla macchina, scarica npm.
Configurazione delle dipendenze di deployment
Installazione delle dipendenze di produzione con npm
Quando esegui il deployment della funzione, Cloud Functions installa le dipendenze
dichiarate nel file package.json
utilizzando il comando
npm install
:
npm install --production
Nel runtime Node.js 8 e versioni successive, se esiste un file yarn.lock
,
Cloud Functions utilizza il comando
yarn install
:
yarn install --production
Esecuzione di passaggi di build personalizzati durante il deployment
Dopo aver eseguito il deployment, puoi eseguire un passaggio di build personalizzato durante il processo di compilazione della funzione aggiungendo uno script gcp-build
nel file package.json
.
Quando questo script viene eseguito, le dipendenze nei campi dependencies
e
devDependencies
del file package.json
sono disponibili. Dopo aver eseguito il passaggio di build personalizzato, Cloud Functions rimuove e rigenera la cartella node_modules
installando solo le dipendenze di produzione dichiarate nel campo dependencies
del file package.json
.
Se non esistono script gcp-build
in package.json
, Cloud Functions installa solo le dipendenze di produzione.
Utilizzo dei pacchetti di sistema
Il runtime Node.js include anche una serie di pacchetti di sistemi nell'ambiente di esecuzione. Se la tua funzione utilizza una dipendenza che richiede un pacchetto non incluso nell'elenco, puoi richiedere un pacchetto.
Inclusi moduli Node.js locali
Nella funzione puoi anche includere moduli Node.js locali. Puoi ottenere tutto ciò dichiarando il tuo modulo in package.json
utilizzando il prefisso file:
. Nell'esempio seguente, mymodule
si riferisce al nome del modulo e mymoduledir
è la directory che contiene il modulo:
{ "dependencies": { "mymodule": "file:mymoduledir" } }
Il codice di questo modulo locale deve essere archiviato in un percorso diverso dalla cartella
node_modules
all'interno della directory principale della funzione.
Caricamento dei moduli Node.js
Utilizza la funzione Node.js
require()
per caricare qualsiasi modulo Node.js installato. Puoi anche utilizzare la funzione require()
per importare i file locali di cui esegui il deployment insieme alla funzione.
Utilizzo di moduli privati
Puoi utilizzare un modulo npm privato specificando le impostazioni per l'autenticazione con il Registro di sistema in un file .npmrc
nella directory della funzione.
Moduli privati di Artifact Registry
Un repository del pacchetto Node.js Artifact Registry
può ospitare moduli privati per la tua funzione. Durante il deployment in Cloud Functions, il processo di compilazione genererà automaticamente le credenziali Artifact Registry per l'account di servizio Cloud Build.
Devi elencare solo il repository Artifact Registry nel tuo .npmrc
senza generare credenziali aggiuntive. Ad esempio:
@SCOPE:registry=REPOSITORY_URL
//REPOSITORY_URL:always-auth=true
Moduli privati di altri repository
La documentazione npm spiega come creare token di accesso personalizzati di sola lettura. Sconsigliamo l'utilizzo del file .npmrc
creato nella directory
home perché contiene un token di lettura-scrittura. Le autorizzazioni di scrittura non sono necessarie durante il deployment e potrebbero rappresentare un rischio per la sicurezza.
Non includere il file .npmrc
se non utilizzi repository privati,
in quanto potrebbero aumentare i tempi di deployment delle tue funzioni.
Formato file
Se utilizzi un file .npmrc
per impostare un token di autenticazione personalizzato, devi includere la riga riportata di seguito. Sostituisci <YOUR_AUTH_TOKEN>
con il token di autenticazione
fornito da NPM.
//registry.npmjs.org/:_authToken=<YOUR_AUTH_TOKEN>