package.json
. Les environnements d'exécution Cloud Functions Node.js prennent généralement en charge l'installation à l'aide de npm ou yarn . Pour spécifier une dépendance pour votre fonction, ajoutez-la à votre 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 ensuite 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 dans package.json
à l'aide du file:
prefix . Dans l'exemple suivant, mymodule
fait référence au nom de votre module et mymoduledir
est le répertoire contenant votre 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.
É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 proposer de meilleures suggestions de saisie semi-automatique. Certaines bibliothèques, comme firebase-admin
et firebase-functions
, sont livrées avec les définitions TypeScript incluses.
De nombreuses bibliothèques ne fournissent pas leur propre définition TypeScript. Le projet DefinitelyTyped fournit des définitions gérées par la communauté pour les bibliothèques de nœuds les plus 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 bibliothèque uuid
avec 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 devez pas enregistrer uuid
en tant que dépendance normale et @types/uuid
en tant que dépendance dev ou dépendance d'homologue.
Chargement des modules Node.js
Utilisez la fonction Node.js require()
pour charger n'importe quel module Node.js que vous avez installé. Vous pouvez également utiliser la fonction require()
pour importer des fichiers locaux que vous déployez avec votre fonction.
import
de la même manière pour charger n'importe quel module Node.js que vous avez installé.Utiliser des modules privés
Vous pouvez utiliser un module npm privé en fournissant des paramètres d'authentification auprès du registre dans un fichier .npmrc
dans le répertoire de la fonction.
Modules privés d'Artifact Registry
Un référentiel de packages Artifact Registry Node.js peut héberger des modules privés pour votre fonction. Lors du déploiement sur Cloud Functions, le processus de compilation génère automatiquement les identifiants Artifact Registry pour le compte de service Cloud Build . Il vous suffit de répertorier le référentiel Artifact Registry dans votre fichier .npmrc
sans générer d'informations d'identification supplémentaires. Par exemple:
@SCOPE:registry=https://REGION_ID-npm.pkg.dev/PROJECT_ID/REPOSITORY_NAME
//REGION_ID-npm.pkg.dev/PROJECT_ID/REPOSITORY_NAME:always-auth=true
Modules privés d'autres référentiels
La documentation npm explique comment créer des jetons d'accès en lecture seule personnalisés. Nous vous déconseillons d'utiliser le fichier .npmrc
créé dans le répertoire de base 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é.
N'incluez pas le fichier .npmrc
si vous n'utilisez pas de référentiels privés, car cela peut augmenter le temps de déploiement de vos fonctions.
Format de fichier
Si vous utilisez un fichier .npmrc
pour définir un jeton d'authentification personnalisé, il doit inclure la ligne ci-dessous. Remplacez <YOUR_AUTH_TOKEN>
par votre jeton d'authentification fourni par NPM.
//registry.npmjs.org/:_authToken=<YOUR_AUTH_TOKEN>