Ir para o console

Como processar dependências

Uma função pode usar módulos Node.js externos, bem como dados locais. As dependências no Node.js são gerenciadas com npm e expressas em um arquivo de metadados chamado package.json.

Para especificar uma dependência da sua função, inclua-a no seu arquivo package.json. Se você estiver implantando por meio da ferramenta de linha de comando gcloud, também poderá pré-instalar dependências e implantá-las junto com sua função. Por padrão, a pasta node_modules é adicionada ao seu arquivo .gcloudignore e não é carregada como parte da sua implantação. Para implantar dependências pré-instaladas, remova node_modules/ do arquivo .gcloudignore antes de implantar sua função.

Neste exemplo, uma dependência está listada no arquivo package.json:

{
  "dependencies": {
    "uuid": "^3.0.1"
  }
}

Em seguida, a dependência é importada na função:

JavaScript

const uuid = require('uuid');

// Return a newly generated UUID in the HTTP response.
exports.getUuid = functions.https.onRequest((req, res) => {
  res.send(uuid.v4());
});

TypeScript

import * as uuid from 'uuid';

// Return a newly generated UUID in the HTTP response.
export let getUuid = functions.https.onRequest((req, res) => {
  res.send(uuid.v4());
}

Usar npm para instalar módulos Node.js

A maneira mais fácil de instalar um módulo Node.js é usar o comando npm install na pasta que contém sua função do Cloud Functions. Por exemplo, o seguinte comando adiciona o módulo uuid:

npm install uuid

Isso combina duas etapas:

  1. Marca a versão mais recente do módulo como uma dependência no seu arquivo package.json. Isso é muito importante: o Cloud Functions instala apenas módulos declarados no seu arquivo package.json.
  2. Ele faz o download do módulo para seu diretório node_modules. Isso permite que você use o módulo ao desenvolver localmente.

Se você não tiver o npm instalado na sua máquina, faça o download aqui.

Etapas adicionais do TypeScript

O TypeScript é mais útil com o uso de bibliotecas que têm informações de tipo. Isso permite que o TypeScript capture erros de sintaxe e ofereça aos editores sugestões de preenchimento automático melhores. Algumas bibliotecas, como firebase-admin e firebase-functions, são fornecidas com definições do TypeScript inclusas.

Muitas bibliotecas não oferecem definições próprias do TypeScript. O projeto DefinitelyTyped fornece definições mantidas pela comunidade para as bibliotecas de node mais conhecidas. O DefinitelyTyped publica essas definições com o mesmo nome do pacote NPM, mas dentro da organização "@types". Por exemplo, você pode instalar as informações de tipo para a biblioteca uuid com o seguinte comando:

npm install @types/uuid

Conforme você se familiarizar com o TypeScript, poderá combinar ambas as instalações:

npm install uuid @types/uuid

As dependências de tipo precisam ser do mesmo tipo que a dependência da biblioteca. Por exemplo, você não deve salvar uuid como uma dependência normal e @types/uuid como uma dependência de desenvolvedor ou de pares.

Carregar módulos Node.js

Use a função require() do Node.js para carregar qualquer módulo Node.js instalado. Você também pode usar a função require() para importar os arquivos locais implantados com sua função.

Se você estiver escrevendo funções no TypeScript, use a declaração import da mesma maneira para carregar qualquer módulo Node.js instalado.

Usar módulos privados

Para usar um módulo npm privado, você precisa fornecer as credenciais (token de autenticação) do registro npm em um arquivo .npmrc, localizado no diretório da função. A documentação do npm explica como criar tokens personalizados de acesso somente leitura. Não recomendamos a utilização do arquivo .npmrc criado no diretório pessoal, já que ele contém um token de leitura e gravação. Permissões de gravação não são necessárias durante a implantação e podem representar um risco de segurança.

Não inclua o arquivo .npmrc se você não estiver usando repositórios particulares. Isso pode aumentar o tempo de implantação das funções.