Catch up on everything announced at Firebase Summit, and learn how Firebase can help you accelerate app development and run your app with confidence. Learn More

Manejo de dependencias

Organiza tus páginas con colecciones Guarda y categoriza el contenido según tus preferencias.

Se permite que una función utilice módulos externos de Node.js, así como datos locales. Las dependencias en Node.js se administran con npm y se expresan en un archivo de metadatos llamado package.json . Los tiempos de ejecución de Cloud Functions Node.js generalmente admiten la instalación mediante npm o yarn .

Para especificar una dependencia para su función, agréguela a su archivo package.json .

En este ejemplo, se incluye una dependencia en el archivo package.json :

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

A continuación, la dependencia se importa en la función:

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')}!`);
});

Mecanografiado

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')}!`);
}

Incluyendo módulos locales de Node.js

También puede incluir módulos locales de Node.js como parte de su función. Puede lograr esto declarando su módulo en package.json usando el file: prefijo . En el siguiente ejemplo, mymodule se refiere al nombre de su módulo y mymoduledir es el directorio que contiene su módulo:

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

El código para este módulo local debe almacenarse en otro lugar que no sea la carpeta node_modules dentro del directorio raíz de su función.

Pasos adicionales para TypeScript

TypeScript lo ayuda más cuando usa bibliotecas que tienen información de tipo. Esto permite que TypeScript detecte errores de sintaxis y permite que los editores le den mejores sugerencias de autocompletado. Algunas bibliotecas, como firebase-admin y firebase-functions , se envían con definiciones de TypeScript incluidas.

Muchas bibliotecas no proporcionan su propia definición de TypeScript. El proyecto DefinitelyTyped proporciona definiciones mantenidas por la comunidad para las bibliotecas de nodos más populares. DefinitelyTyped publica estas definiciones con el mismo nombre de paquete de NPM, pero dentro de la organización "@types". Por ejemplo, puede instalar la información de tipo para la biblioteca uuid con lo siguiente:

npm install @types/uuid

A medida que se familiarice con TypeScript, es posible que se encuentre combinando ambas instalaciones:

npm install uuid @types/uuid

Las dependencias de tipo deben ser del mismo tipo que la dependencia de la biblioteca. Por ejemplo, no debe guardar uuid como una dependencia normal y @types/uuid como una dependencia de desarrollo o una dependencia de pares.

Cargando módulos de Node.js

Utilice la función require() de Node.js para cargar cualquier módulo de Node.js que haya instalado. También puede usar la función require() para importar archivos locales que implemente junto con su función.

Si está escribiendo funciones en TypeScript, use la declaración de import de la misma manera para cargar cualquier módulo de Node.js que haya instalado.

Uso de módulos privados

Puede usar un módulo npm privado proporcionando configuraciones para autenticarse con el registro en un archivo .npmrc en el directorio de la función.

Módulos privados de Artifact Registry

Un repositorio de paquetes de Artifact Registry Node.js puede albergar módulos privados para su función. Al implementar Cloud Functions, el proceso de compilación generará automáticamente las credenciales de Artifact Registry para la cuenta de servicio de Cloud Build . Solo necesita enumerar el repositorio de Artifact Registry en su .npmrc sin generar credenciales adicionales. Por ejemplo:

@SCOPE:registry=https://REGION_ID-npm.pkg.dev/PROJECT_ID/REPOSITORY_NAME
//REGION_ID-npm.pkg.dev/PROJECT_ID/REPOSITORY_NAME:always-auth=true

Módulos privados de otros repositorios

La documentación de npm explica cómo crear tokens de acceso personalizados de solo lectura. No recomendamos usar el archivo .npmrc creado en el directorio de inicio porque contiene un token de lectura y escritura. No se requieren permisos de escritura durante la implementación y podrían representar un riesgo de seguridad.

No incluya el archivo .npmrc si no está utilizando repositorios privados, ya que puede aumentar el tiempo de implementación de sus funciones.

Formato de archivo

Si está utilizando un archivo .npmrc para configurar un token de autenticación personalizado, debe incluir la línea que se muestra a continuación. Reemplace <YOUR_AUTH_TOKEN> con su token de autenticación proporcionado por NPM.

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