Firebase volverá a Google I/O el 10 de mayo. Registrarse ahora

Administra las dependencias

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

Las funciones pueden usar módulos de Node.js externos y datos locales. Las dependencias en Node.js se administran con npm y se expresan en un archivo de metadatos llamado package.json. Por lo general, los entornos de ejecución de Node.js para Cloud Functions admiten la instalación mediante npm o yarn.

Si quieres especificar una dependencia para tu función, agrégala al archivo package.json.

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

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

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

TypeScript

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

Incluye módulos locales de Node.js

También puedes incluir módulos locales de Node.js como parte de tu función. Para ello, declara tu módulo en package.json mediante el prefijo file:. En el siguiente ejemplo, mymodule hace referencia al nombre del módulo y mymoduledir es el directorio que contiene el módulo:

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

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

Pasos adicionales para TypeScript

TypeScript te ayuda mucho más cuando usas bibliotecas que tienen información sobre tipos. Esto permite que TypeScript detecte errores de sintaxis y que los editores te ofrezcan mejores sugerencias de autocompletado. Algunas bibliotecas, como firebase-admin y firebase-functions, se envían con las definiciones de TypeScript incluidas.

Muchas bibliotecas no proporcionan definiciones de TypeScript. El proyecto DefinitelyTyped proporciona definiciones con mantenimiento de la comunidad para las bibliotecas de nodos más populares. DefinitelyTyped publica estas definiciones con el mismo nombre del paquete NPM, pero dentro de la organización “@types”. Por ejemplo, puedes usar este comando a fin de instalar la información sobre tipos para la biblioteca uuid:

npm install @types/uuid

Cuando estés más familiarizado con TypeScript, podrás combinar ambas instalaciones:

npm install uuid @types/uuid

Las dependencias de tipo deberían ser del mismo tipo que las de la biblioteca. Por ejemplo, no deberías guardar uuid como una dependencia normal y @types/uuid como una dependencia de desarrollo o de par.

Carga módulos de Node.js

Usa la función require() de Node.js para cargar cualquier módulo de Node.js que instales. También puedes usar la función require() para importar archivos locales que implementes junto con tu función.

Si escribes funciones en TypeScript, usa la declaración import de la misma forma para cargar los módulos de Node.js que tengas instalados.

Usa módulos privados

Puedes usar un módulo de npm privado si proporcionas la configuración para autenticarte 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 Node.js en Artifact Registry puede alojar módulos privados para tu función. Cuando realizas una implementación en Cloud Functions, el proceso de compilación generará automáticamente las credenciales de Artifact Registry para la cuenta de servicio de Cloud Build. Solo necesitas agregar a una lista el repositorio de Artifact Registry en tu archivo .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

En la documentación de npm se explica cómo crear tus propios tokens de acceso de solo lectura. No recomendamos el uso del archivo .npmrc que se creó en el directorio principal porque contiene un token de lectura/escritura. No se necesitan permisos de escritura para la implementación. Además, podrían poner en riesgo la seguridad.

No incluyas el archivo .npmrc si no usas repositorios privados, ya que puede aumentar el tiempo de implementación de tus funciones.

Formato de archivo

Si usas un archivo .npmrc para definir un token de autenticación personalizado, el archivo debe incluir la línea que se muestra a continuación. Reemplaza <YOUR_AUTH_TOKEN> por tu token de autenticación proporcionado por NPM.

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