Especifica dependencias en Node.js

Una función puede 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:

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

Instala módulos de Node.js localmente con npm

La manera más simple de instalar un módulo de Node.js de forma local es usar el comando npm install en la carpeta que contiene la función de Cloud Functions. Por ejemplo, el siguiente comando agrega el módulo uuid:

npm install uuid

Esto combina dos pasos:

  1. Marca la última versión del módulo como una dependencia en tu archivo package.json. Esto es muy importante: Cloud Functions solo instala módulos que están declarados en tu archivo package.json.
  2. Descarga el módulo en tu directorio node_modules. Esto te permite usar el módulo cuando desarrollas de forma local.

Si no tienes npm instalado en tu máquina, descárgalo.

Configura dependencias de implementación

Instala dependencias de producción con npm

Cuando implementas tu función, Cloud Functions instala las dependencias declaradas en el archivo package.json con el comando npm install:

npm install --production

En el entorno de ejecución de Node.js 8 y versiones posteriores, si existe un archivo yarn.lock, Cloud Functions usa el comando yarn install en su lugar:

yarn install --production

Ejecuta pasos de compilación personalizados durante la implementación

Después de realizar la implementación, puedes realizar una etapa de compilación personalizada durante el proceso de compilación de la función agregando una secuencia de comandos gcp-build en el archivo package.json.

Cuando se ejecuta esta secuencia de comandos, las dependencias en los campos dependencies y devDependencies del archivo package.json están disponibles. Después de ejecutar este paso, Cloud Functions quita y vuelve a generar la carpeta node_modules mediante la instalación de dependencias de producción declaradas en el campo dependencies del archivo package.json.

Si no hay una secuencia de comandos gcp-build en package.json, Cloud Functions solo instala dependencias de producción.

Usa paquetes del sistema

El entorno de ejecución de Node.js también incluye una cantidad de paquetes del sistema. Si la función usa una dependencia que requiere un paquete que no aparece en la lista, puedes solicitar un paquete.

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 el 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.

Carga módulos 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.

Usa módulos privados

Para usar un módulo de npm privado, debes proporcionar credenciales (token de autenticación) para el registro de npm en un archivo .npmrc ubicado en el directorio de la función. En la documentación de npm, se explica cómo crear tus propios tokens de acceso personalizados de solo lectura. No recomendamos el uso del archivo .npmrc creado en el directorio principal dado que contiene un token de lectura y escritura. No se necesitan permisos de escritura para el proceso de 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>