Spécifier des dépendances dans Node.js

Une fonction est autorisée à utiliser des modules Node.js externes, ainsi que des données locales. Dans Node.js, les dépendances sont gérées avec npm et exprimées dans un fichier de métadonnées appelé package.json. Les environnements d'exécution Node.js de Cloud Functions permettent généralement l'installation de dépendances à l'aide de npm ou de yarn.

Pour spécifier une dépendance pour votre fonction, ajoutez-la au fichier package.json.

Dans cet exemple, une dépendance est répertoriée dans le fichier package.json :

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

La dépendance est alors importée dans la fonction :

const escapeHtml = require('escape-html');

/**
 * HTTP Cloud Function.
 *
 * @param {Object} req Cloud Function request context.
 *                     More info: https://expressjs.com/en/api.html#req
 * @param {Object} res Cloud Function response context.
 *                     More info: https://expressjs.com/en/api.html#res
 */
exports.helloHttp = (req, res) => {
  res.send(`Hello ${escapeHtml(req.query.name || req.body.name || 'World')}!`);
};

Installer des dépendances lors du déploiement

Lorsque vous déployez votre fonction, Cloud Functions installe les dépendances déclarées dans le fichier package.json à l'aide de la commande npm install :

npm install --production

Dans l'environnement d'exécution Node.js 8 ou version ultérieure, si un fichier yarn.lock existe, les fonctions Cloud Functions utilisent la commande yarn install :

yarn install --production

Exécuter les étapes de compilation personnalisée lors du déploiement

Au moment du déploiement, avant de démarrer votre application, vous pouvez effectuer une étape de compilation personnalisée en ajoutant un script gcp-build dans votre fichier package.json.

Lorsque ce script est exécuté, les dépendances des champs dependencies et devDependencies du fichier package.json sont disponibles. Après avoir exécuté l'étape de compilation personnalisée, Cloud Functions supprime et génère à nouveau le dossier node_modules en n'installant que les dépendances de l'environnement de production déclarées dans le champ dependencies du fichier package.json.

Si le fichier package.json ne contient pas de script gcp-build, Cloud Functions installe simplement les dépendances de l'environnement de production.

Utiliser des packages système

L'environnement d'exécution Node.js inclut également un certain nombre de packages système. Si votre fonction utilise une dépendance nécessitant un package non répertorié, vous pouvez demander un package.

Inclure des modules Node.js locaux dans votre package de déploiement

Vous pouvez également inclure des modules Node.js locaux comme faisant partie de votre fonction. Pour ce faire, déclarez votre module dans le fichier package.json à l'aide du préfixe file:. Dans l'exemple suivant, mymodule fait référence au nom de votre module et mymoduledir correspond au répertoire contenant le module :

{
  "dependencies": {
    "mymodule": "file:mymoduledir"
  }
}

Le code de ce module local doit être stocké ailleurs que dans le dossier node_modules du répertoire racine de votre fonction.

Utiliser npm pour installer des modules Node.js localement

La méthode la plus simple pour installer un module Node.js localement consiste à utiliser la commande npm install dans le dossier contenant votre fonction Cloud. Par exemple, la commande suivante ajoute le module uuid :

npm install uuid

Cette commande a un double effet :

  1. Elle définit la dernière version du module comme dépendance dans votre fichier package.json. C'est très important : Cloud Functions installe uniquement les modules qui sont déclarés dans votre fichier package.json.
  2. Elle télécharge le module dans votre répertoire node_modules. Cela vous permet d'utiliser le module lors du développement local.

Si vous n'avez pas installé npm sur votre ordinateur, procurez-vous npm.

Charger des modules Node.js

Utilisez la fonction require() Node.js pour charger les modules Node.js que vous avez installés. Vous pouvez également utiliser la fonction require() pour importer les fichiers locaux que vous déployez avec votre fonction.

Utiliser des modules privés

Pour utiliser un module npm privé, vous devez fournir les identifiants (jeton d'authentification) du registre npm dans un fichier .npmrc situé dans le répertoire de la fonction. La documentation npm explique comment créer des jetons d'accès personnalisés en lecture seule. Nous déconseillons l'utilisation du fichier .npmrc créé dans le répertoire d'accueil, car il contient un jeton de lecture/écriture. Les autorisations d'écriture ne sont pas requises pendant le déploiement et peuvent présenter un risque pour la sécurité.

N'incluez pas le fichier .npmrc si vous n'utilisez pas de dépôts privés, car cela peut augmenter le temps de déploiement de vos fonctions.