Join us for Firebase Summit on November 10, 2021. Tune in to learn how Firebase can help you accelerate app development, release with confidence, and scale with ease. Register

Gestion des dépendances

Une fonction est autorisée à utiliser des modules Node.js externes ainsi que des données locales. Dépendances à Node.js sont gérées avec NPM et exprimées dans un fichier de métadonnées appelé package.json . Les fonctions de cloud les runtimes soutiennent généralement l' installation en utilisant NPM ou fil .

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

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

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

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

JavaScript

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

// Return a greeting with the input HTML-escaped.
exports.hello = functions.https.onRequest((req, res) => {
  res.send(`Hello ${escapeHtml(req.query.name || req.body.name || 'World')}!`);
});

Manuscrit

import * as escapeHtml from 'escape-html';

// Return a greeting with the input HTML-escaped.
export let hello = functions.https.onRequest((req, res) => {
  res.send(`Hello ${escapeHtml(req.query.name || req.body.name || 'World')}!`);
}

Y compris les modules Node.js locaux

Vous pouvez également inclure des modules Node.js locaux dans votre fonction. Vous pouvez y parvenir en déclarant votre module package.json à l' aide du file: préfixe . Dans l'exemple suivant, mymodule fait référence à votre nom du module et mymoduledir est le répertoire contenant votre module:

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

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

Étapes supplémentaires pour TypeScript

TypeScript vous aide le plus lorsque vous utilisez des bibliothèques contenant des informations de type. Cela permet à TypeScript de détecter les erreurs de syntaxe et aux éditeurs de vous donner de meilleures suggestions de saisie semi-automatique. Certaines bibliothèques, comme firebase-admin et les firebase-functions , sont livrés avec des définitions tapuscrit inclus.

De nombreuses bibliothèques ne fournissent pas leur propre définition TypeScript. Le DefinitelyTyped projet fournit des définitions communautaires pour maintenir les la plupart des bibliothèques de noeuds populaires. DefinitelyTyped publie ces définitions sous le même nom de package NPM, mais à l'intérieur de l'organisation "@types". Par exemple, vous pouvez installer les informations de type pour la uuid bibliothèque ce qui suit:

npm install @types/uuid

Au fur et à mesure que vous vous familiariserez avec TypeScript, vous pourriez vous retrouver à combiner les deux installations :

npm install uuid @types/uuid

Les dépendances de type doivent être du même type que la dépendance de bibliothèque. Par exemple, vous ne devriez pas enregistrer uuid comme une dépendance normale et @types/uuid comme une dépendance de dev ou de dépendance par les pairs.

Chargement des modules Node.js

Utilisez les Node.js require() fonction pour charger un module Node.js vous avez installé. Vous pouvez également utiliser l' require() fonction d'importer des fichiers locaux que vous déployez à côté de votre fonction.

Si vous écrivez des fonctions dactylographiée, utilisez l' import déclaration de la même manière de charger un module Node.js vous avez installé.

Utiliser des modules privés

Pour utiliser un module NPM privé , vous devez fournir des informations d' identification (jeton auth) pour le registre de NPM dans un .npmrc fichier 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écourageons à l' aide du .npmrc fichier créé dans le répertoire , car il contient un jeton de lecture-écriture. Les autorisations d'écriture ne sont pas requises pendant le déploiement et peuvent poser un risque de sécurité.

Ne pas inclure le .npmrc fichier si vous ne l' utilisez des référentiels privés, car il peut augmenter le temps de déploiement pour vos fonctions.

Format de fichier

Si vous utilisez un .npmrc fichier pour définir un jeton auth personnalisé, il doit inclure la ligne ci - dessous. Remplacez <YOUR_AUTH_TOKEN> avec votre jeton d'authentification NPM fourni.

//registry.npmjs.org/:_authToken=<YOUR_AUTH_TOKEN>