Ir a la consola

Referencia de Firebase CLI

Firebase CLI (GitHub) proporciona una variedad de herramientas para administrar, visualizar e implementar en proyectos de Firebase.

Configuración

Antes de que puedas instalar Firebase CLI, deberás instalar Node.js en tu equipo. Una vez que instales Node.js, puedes ejecutar el siguiente comando para instalar Firebase CLI mediante npm (Node Package Manager):

npm install -g firebase-tools

Ahora, deberías tener un comando de Firebase disponible de manera global desde cualquier ventana de terminal del equipo. Una vez que hayas instalado Firebase CLI, accede con tu cuenta de Google:

firebase login

Este comando conecta el equipo local a tu cuenta de Firebase y otorga acceso a tus proyectos. Para verificar que funcionó la autenticación, puedes ejecutar firebase list para ver una lista de todos tus proyectos de Firebase. La lista debería mostrar los mismos proyectos que aparecen en Firebase console.

Descarga la última versión

Para asegurarte de que tu CLI de Firebase esté actualizada, puedes volver a ejecutar el comando de instalación:

npm install -g firebase-tools

Directorios del proyecto

Para muchas tareas comunes que ejecuta la CLI, como la implementación, se necesita un directorio de proyecto. Un directorio de proyecto es cualquier directorio que tenga un archivo de configuración firebase.json. Por lo general, el directorio de proyecto debe ser el mismo que tu raíz de control de fuente, y comúnmente firebase.json se encuentra junto con el archivo README y otros archivos de nivel superior.

Inicializa un directorio para tu proyecto

Para inicializar un directorio de proyecto nuevo, cambia los directorios en la terminal por el directorio de proyecto que desees usar y ejecuta lo siguiente:

firebase init

El comando init te guía a través de la configuración de tu directorio de proyecto y te pregunta qué funciones de Firebase deseas usar. No te preocupes, siempre puedes volver a ejecutar init para agregar una función nueva.

El último paso del comando init te pide que selecciones un proyecto de Firebase predeterminado. Esto asocia el directorio con un proyecto, de modo que cuando ejecutes comandos específicos del proyecto (como firebase deploy) desde tu directorio de proyecto, se usa el proyecto correcto. También es posible asociar varios proyectos (como un proyecto de prueba y de producción) con el mismo directorio.

Implementación

La CLI de Firebase administra la implementación de códigos y elementos en tu proyecto de Firebase. El comando firebase deploy puede implementar lo siguiente:

  • Nuevas liberaciones de tus sitios de Firebase Hosting
  • Cloud Functions nuevas o existentes
  • Reglas de Firebase Realtime Database
  • Reglas para Cloud Storage
  • Reglas para Cloud Firestore
  • Índices para Cloud Firestore

De forma predeterminada, las implementaciones crean nuevas liberaciones de todos los recursos que pueden implementarse en el directorio de tu proyecto. Es obligatorio que un directorio de proyecto tenga un archivo firebase.json para que la implementación sea posible.

Conflictos de la implementación

Cuando implementas reglas de seguridad para Firebase Database o Storage, las reglas de seguridad existentes se sobrescriben. Esto significa que todos los cambios que se hicieron en Firebase console se pueden perder si ejecutas firebase deploy desde la línea de comandos. Si especificas reglas en tu directorio de proyecto de Firebase, es fundamental que no edites las reglas en Firebase console o que actualices de inmediato tu copia local de las reglas después de publicarlas.

Cuotas de implementación

Es posible (pero poco probable) superar una cuota que limite la velocidad o el volumen de las operaciones de implementación de Firebase. Por ejemplo, si implementas un gran número de funciones, puedes recibir un mensaje de error HTTP 429 Quota. Para solucionar estos problemas, puedes realizar implementaciones parciales o solicitar un aumento de cuota. Puedes solicitar aumentos de cuota específicos para los servicios de Firebase, incluida la cuota Solicitudes de escritura cada 100 segundos por usuario relacionada con el error de Cloud Functions citado anteriormente.

Reversión

Para revertir las implementaciones de Firebase Hosting, ve al panel Hosting de tu proyecto en Firebase console y selecciona la acción Revertir para la liberación que desees. Actualmente, no es posible revertir liberaciones de reglas de Firebase Database ni Storage.

Implementaciones parciales

Si solo quieres implementar algunas funciones específicas, puedes usar una lista de elementos separados por comas en una marca del comando deploy. Por ejemplo:

firebase deploy --only hosting

Las funciones válidas para la marca --only son hosting, functions, database, storage y firestore. Estos nombres corresponden a las claves de tu archivo de configuración firebase.json.

Cuando implementas funciones, puedes indicar algunas de forma específica:

firebase deploy --only functions:function1
firebase deploy --only functions:function1,functions:function2

También puedes agrupar funciones en grupos de exportación para implementar varias funciones en un solo comando. Por ejemplo, puedes definir grupos dentro de functions/index.js de la siguiente forma:

var functions = require('firebase-functions');

exports.groupA = {
  function1: functions.https.onRequest(...);
  function2: functions.database.ref('\path').onWrite(...);
}
exports.groupB = require('./groupB);

En este caso, functions/groupB.js contiene funciones adicionales:

var functions = require('firebase-functions');

exports.function3 = functions.storage.object().onChange(...);
exports.function4 = functions.analytics.event('in_app_purchase').onLog(...);

Para implementar todas las funciones de un grupo, ejecuta lo siguiente:

firebase deploy --only functions:groupA

Para indicar una función específica dentro de un grupo, ejecuta lo siguiente:

firebase deploy --only functions:groupA.function1,groupB.function4

Hooks previos a la implementación y posteriores a ella

Puedes conectar secuencias de comandos de shell en comandos de implementación para ejecutar tareas previas a la implementación o posteriores a ella. Por ejemplo, una secuencia de comandos previa a la implementación podría transpilar el código de TypeScript a JavaScript y un hook posterior a la implementación podría notificar a los administradores cuando se implementa contenido nuevo del sitio en Firebase Hosting.

Para configurar hooks de implementación, agrega secuencias de comandos de bash al archivo de configuración firebase.json para el proyecto. Las secuencias de comandos breves se pueden definir directamente en el archivo o puedes hacer referencia a los archivos en el directorio de tu proyecto. Por ejemplo, esta es la expresión firebase.json para una secuencia de comandos posterior a la implementación que envía un mensaje de Slack cuando se completa una implementación en Firebase Hosting correctamente:

 {
   "hosting":{
     "postdeploy":"./messageSlack.sh 'Just deployed to Firebase Hosting'",
     "public":"public"
   }
 }

La secuencia de comandos messageSlack.sh que reside en el directorio de proyecto tendría el siguiente formato:

 curl -X POST -H 'Content-type: application/json' --data '{"text":"$1"}'
 \https://<Slack_Webhook_URL>

Para cualquiera de los recursos que puedes implementar (hosting, functions, database, storage y firestore), puedes agregar hooks predeploy o postdeploy en firebase.json y tus secuencias de comandos se ejecutarán con el comando de implementación correspondiente. Tanto los hooks previos a la implementación como los posteriores a la implementación muestran los flujos estándar de salida y de errores de las secuencias de comandos en la terminal. En caso de error, ten en cuenta lo siguiente:

  • Si no se completa un hook previo a la implementación como corresponde, la implementación se cancela.
  • Si la implementación falla por cualquier motivo, los hooks previos a la implementación no se activan.

Variables del entorno

Las siguientes variables del entorno están disponibles dentro de las secuencias de comandos que se ejecutan en los hooks previos a la implementación y posteriores a ella:

  • $GCLOUD_PROJECT: El ID del proyecto activo
  • $PROJECT_DIR: El directorio raíz que contiene firebase.json
  • $RESOURCE_DIR: Solo para secuencias de comandos hosting y functions: la ubicación del directorio que contiene el alojamiento o los recursos de funciones que se implementarán

Administra alias de proyectos

Puedes asociar varios proyectos de Firebase con el mismo directorio de trabajo. Por ejemplo, es posible que desees usar un proyecto de Firebase para pruebas y otro para la producción. Si usas diferentes entornos de proyectos, podrás verificar los cambios antes de implementarlos en la producción. El comando firebase use te permite cambiar de un alias a otro o crear uno nuevo.

Agrega un alias a tu proyecto

Cuando seleccionas un proyecto durante firebase init, se crea un alias llamado default. Para crear un nuevo alias, ejecuta lo siguiente:

firebase use --add

Este comando te permite seleccionar un proyecto de Firebase y darle un alias específico. Las definiciones de alias se escriben en un archivo .firebaserc dentro de tu directorio de proyecto.

Usa alias de proyectos

Para ver una lista de los alias definidos actualmente para tu directorio de proyecto, ejecuta firebase use. Para cambiar de un alias a otro, ejecuta lo siguiente:

firebase use <alias_or_project_id>

Cuando uses un alias, todos los comandos específicos del proyecto (como firebase deploy o firebase data:get) se ejecutarán en el proyecto que se esté usando en ese momento. Si se define solo un alias en tu directorio de proyecto, se usará de forma automática.

Para borrar tu alias actual, ejecuta firebase use --clear. Si deseas borrar otro alias, ejecuta firebase use --unalias <alias>.

Control de código fuente y alias de proyectos

En general, debes registrar tu proyecto .firebaserc en el control de código fuente. Esto permite a tu equipo compartir alias de un proyecto común. Si tienes un proyecto de programación que solo tú usas, puedes pasar la marca --project con cada comando o ejecutar firebase use <project_id> sin definirlo como alias.

Por lo general, los proyectos de código abierto o las plantillas de inicio no deberían registrar el archivo .firebaserc.

Referencia de comandos

Comandos administrativos

Comando Descripción
login Autentica con tu cuenta de Firebase. Se necesita acceso a un navegador web.
logout Cierra la sesión de Firebase CLI.
login:ci Genera un token de autenticación para usarlo en entornos no interactivos.
list Muestra una lista de todos tus proyectos de Firebase.
use Establece el proyecto activo de Firebase, administra alias de proyecto.
open Abre rápidamente un navegador con los recursos de proyecto pertinentes.
init Establece un nuevo proyecto de Firebase en el directorio actual. Este comando creará un archivo de configuración firebase.json en tu directorio actual.
help Muestra información de ayuda sobre la CLI o los comandos específicos.

Implementación y desarrollo local

Estos comandos te permiten implementar y, además, interactuar con tu sitio de Firebase Hosting.

Comando Descripción
deploy Implementa tu proyecto de Firebase. Se basa en la configuración de firebase.json y tu carpeta de proyecto local.
serve Inicia un servidor web local con tu configuración de Firebase Hosting. Se basa en firebase.json.

Comandos de base de datos

Comando Descripción
database:get Recupera datos desde la base de datos del proyecto actual y los muestra en formato JSON. Admite consultas en datos indexados.
database:set Reemplaza todos los datos en una ubicación específica en la base de datos del proyecto actual. Obtiene parámetros de entrada de un archivo, STDIN o el argumento de la línea de comandos.
database:update Ejecuta una actualización parcial en una ubicación especificada en la base de datos del proyecto actual. Obtiene parámetros de entrada de un archivo, STDIN o el argumento de la línea de comandos.
database:push Envía datos nuevos a una lista en la ubicación especificada de la base de datos del proyecto actual. Obtiene parámetros de entrada de un archivo, STDIN o el argumento de la línea de comandos.
database:remove Borra datos de una ubicación especificada de la base de datos del proyecto actual.
database:profile Construye un perfil de operaciones en la base de datos de tu proyecto. Consulta Perfil de Realtime Database para ver información más detallada sobre las operaciones.

Comandos de Hosting

Comando Descripción
hosting:disable Deja de procesar tráfico de Firebase Hosting para el proyecto activo. Después de ejecutar este comando, se mostrará el mensaje "Site Not Found" en la URL de Hosting de tu proyecto.

Comandos de Cloud Firestore

Comando Descripción
firestore:delete Borra documentos de Cloud Firestore. Con Firebase CLI, puedes usar eliminaciones recurrentes para borrar todos los documentos de una colección.

Comandos de Cloud Functions

Comando Descripción
functions:log Lee registros de las Cloud Functions implementadas.
functions:config:set Almacena valores de configuración del tiempo de ejecución para las Cloud Functions del proyecto actual.
functions:config:get Recupera valores de configuración existentes para las Cloud Functions del proyecto actual.
functions:config:unset Quita valores de la configuración del tiempo de ejecución del proyecto actual.
functions:config:clone Copia la configuración del tiempo de ejecución de un entorno de proyecto a otro.

Para obtener más información, consulta la configuración de entorno.

Comandos de administración de usuarios

Comando Descripción
auth:import Importa cuentas de usuario desde un archivo al proyecto activo. Consulta la página auth:import y auth:export para ver detalles.
auth:export Exporta las cuentas de usuario del proyecto activo a un archivo JSON o CSV. Consulta la página auth:import y auth:export para ver detalles.