Mantieni tutto organizzato con le raccolte Salva e classifica i contenuti in base alle tue preferenze.

Specificare le dipendenze in Node.js

Una funzione può utilizzare i moduli Node.js esterni e i dati locali. Le dipendenze in Node.js vengono gestite con npm ed espresse in un file di metadati denominato package.json. In genere, i runtime di Cloud Functions Node.js supportano l'installazione utilizzando npm o yarn.

Per specificare una dipendenza per la funzione, aggiungila al file package.json.

In questo esempio, è presente una dipendenza nel file package.json:

{
  "dependencies": {
    "escape-html": "^1.0.3"
  }
}

Quindi la dipendenza viene importata nella funzione:

const functions = require('@google-cloud/functions-framework');
const escapeHtml = require('escape-html');

/**
 * Responds to an HTTP request using data from the request body parsed according
 * to the "content-type" header.
 *
 * @param {Object} req Cloud Function request context.
 * @param {Object} res Cloud Function response context.
 */
functions.http('helloHttp', (req, res) => {
  res.send(`Hello ${escapeHtml(req.query.name || req.body.name || 'World')}!`);
});

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

Questa operazione combina due passaggi:

  1. Contrassegna la versione più recente del modulo come dipendenza nel file package.json. Importante: Cloud Functions installa solo i moduli dichiarati nel file package.json.
  2. Scarica il modulo nella directory node_modules. Ciò consente di utilizzare il modulo durante lo sviluppo in locale.

Se non hai installato npm, 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 tramite il comando npm install:

npm install --production

Nel runtime Node.js 8 e versioni successive, se esiste un file yarn.lock, Cloud Functions utilizza invece il comando yarn install:

yarn install --production

Esecuzione di passaggi di build personalizzati durante il deployment

Dopo 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 viene eseguito questo script, sono disponibili le dipendenze nei campi dependencies e devDependencies del tuo file package.json. 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 è presente uno 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 sistema nell'ambiente di esecuzione. Se la funzione utilizza una dipendenza che richiede un pacchetto non elencato, puoi richiedere un pacchetto.

Inclusione di moduli Node.js locali

La funzione può anche includere moduli Node.js locali. A tale scopo, puoi dichiarare il modulo in package.json utilizzando il prefisso file:. Nell'esempio riportato di seguito, mymodule si riferisce al nome del tuo 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 radice della funzione.

Caricamento dei moduli Node.js

Utilizza la funzione Node.js require() per caricare i moduli Node.js installati. 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 fornendo le impostazioni per l'autenticazione con il registro in un file .npmrc nella directory della funzione.

Moduli privati di Artifact Registry

Un repository pacchetti Artifact Registry Node.js 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 solo elencare il repository Artifact Registry nel tuo .npmrc senza generare 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

Moduli privati da altri repository

La documentazione di 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 può aumentare il tempo di deployment delle 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>