Ir a la consola

Referencia de Firebase CLI

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

Antes de usar Firebase CLI, configura un proyecto de Firebase.

Instala Firebase CLI

Firebase CLI (interfaz de línea de comandos) requiere Node.js y npm (Node Package Manager).

  1. Instala Node.js mediante una de las siguientes opciones. Con la instalación de Node.js también se instala automáticamente npm.

    • En macOS o Linux, usa nvm (Node Version Manager).
    • En Windows, usa nvm-windows.
  2. Instala Firebase CLI con npm; para ello, ejecuta el siguiente comando:

    npm install -g firebase-tools

    Este comando instala el comandofirebase disponible de manera global. Para actualizar a la versión más reciente de Firebase CLI, vuelve a ejecutar el mismo comando npm install.

  3. Accede a Firebase con tu Cuenta de Google. Para ello, ejecuta el siguiente comando:

    firebase login

    Este comando conecta tu máquina local a Firebase y te otorga acceso a los proyectos de Firebase.

  4. Para probar que la autenticación se configuró de manera correcta (y para enumerar todos los proyectos de Firebase), ejecuta el siguiente comando:

    firebase list

    La lista que se muestra debe ser la misma que los proyectos de Firebase enumerados en Firebase console.

Actualiza a la versión más reciente de CLI

Asegúrate de usar la versión más reciente de Firebase CLI; para ello, vuelve a ejecutar el comando de instalación de CLI:

npm install -g firebase-tools

Inicializa un proyecto de Firebase

Muchas de las tareas comunes que se realizan con la CLI, como implementarla en un proyecto de Firebase, requieren un directorio del proyecto. Este directorio se establece con el comando firebase init. Por lo general, el directorio del proyecto es el mismo que la raíz de control de fuente y, después de ejecutar firebase init, este contendrá un archivo de configuración firebase.json.

Para inicializar un proyecto de Firebase nuevo, ejecuta el siguiente comando desde el directorio de tu app:

firebase init

El comando firebase init te guía paso a paso en la configuración del directorio del proyecto y algunos productos de Firebase. Durante la inicialización del proyecto, Firebase CLI te solicita lo siguiente:

  • Que selecciones los productos deseados de Firebase y, luego, te solicita que establezcas la configuración de archivos específicos de los productos seleccionados.

    Para configurar un producto de Firebase específico en tu proyecto, consulta la documentación de ese producto a fin de obtener la información de configuración (por ejemplo, Hosting). Ten en cuenta que siempre puedes ejecutar firebase init más tarde a fin de configurar más productos de Firebase.

  • Que selecciones un proyecto predeterminado de Firebase.

    En este paso se asocia el directorio del proyecto actual con un proyecto de Firebase, de modo que los comandos específicos del proyecto (como firebase deploy) se ejecuten en relación con el proyecto de Firebase correcto.

    También es posible asociar varios proyectos de Firebase (como un proyecto de etapa de pruebas y uno de producción) con el mismo directorio de proyecto.

Al final de la inicialización, Firebase crea y agrega automáticamente dos archivos a la raíz del directorio de la app local:

  • Un archivo de configuración firebase.json que contiene la configuración del proyecto

  • Un archivo .firebaserc en el que se almacenan los alias de tu proyecto

El archivo firebase.json

El comando firebase init crea un archivo de configuración firebase.json en la raíz del directorio de tu proyecto.

El archivo firebase.json se necesita para implementar activos con Firebase CLI debido a que especifica qué archivos y qué configuración del directorio del proyecto se implementaron en tu proyecto de Firebase. Como algunas configuraciones se pueden definir en tu proyecto o en Firebase console, asegúrate de resolver cualquier conflicto de implementación potencial.

Puedes configurar la mayoría de las opciones de Firebase Hosting directamente en el archivo firebase.json. Sin embargo, para otros servicios de Firebase que pueden implementarse con Firebase CLI, el comando firebase init crea archivos específicos en los que puedes definir la configuración de esos servicios, como un archivo index.js para Cloud Functions. También puedes configurar hooks previos o posteriores a la implementación en el archivo firebase.json.

El siguiente es un archivo de ejemplo de firebase.json con configuración predeterminada si seleccionas Firebase Hosting, Cloud Firestore y Cloud Functions para Firebase durante la inicialización.

{
  "hosting": {
    "public": "public",
    "ignore": [
      "firebase.json",
      "**/.*",
      "**/node_modules/**"
    ]
  },
  "firestore": {
    "rules": "firestore.rules",
    "indexes": "firestore.indexes.json"
  },
  "functions": {
    "predeploy": [
      "npm --prefix \"$RESOURCE_DIR\" run lint"
    ]
  }
}

Publica y prueba tu proyecto de Firebase de forma local

Puedes ver y probar tu proyecto de Firebase en las URL alojadas localmente antes de implementarlo en la producción. Si solo quieres probar algunas funciones, puedes usar una lista de elementos separados por comas en una marca del comando firebase serve.

Ejecuta el siguiente comando desde la raíz del directorio del proyecto local si quieres realizar alguna de estas acciones:

firebase serve --only hosting

Ejecuta cualquiera de los siguientes comandos desde el directorio de tu proyecto para emular el proyecto con funciones locales de HTTP.

  • A fin de emular funciones de HTTP y alojamiento para pruebas en URL locales, usa cualquiera de los siguientes comandos:

    firebase serve
    firebase serve --only functions,hosting // uses a flag
  • Para emular solo funciones de HTTP, usa el siguiente comando:

    firebase serve --only functions

Según la configuración predeterminada, firebase serve solo responde a las solicitudes de localhost. Esto significa que podrás acceder a tu contenido alojado desde el navegador web de tu computadora, pero no desde otros dispositivos de tu red. Para realizar pruebas desde otros dispositivos locales, usa la marca --host:

firebase serve --host 0.0.0.0  // accepts requests to any host

Implementa un proyecto de Firebase

Firebase CLI administra la implementación del código y los recursos en tu proyecto de Firebase. Esto incluye lo siguiente:

  • Versiones nuevas de tus sitios de Firebase Hosting
  • Cloud Functions para Firebase nuevas, actualizadas o existentes
  • Reglas de Firebase Realtime Database
  • Reglas de Cloud Storage para Firebase
  • Reglas para Cloud Firestore
  • Índices para Cloud Firestore

Para implementar un proyecto de Firebase, ejecuta el siguiente comando desde el directorio de tu proyecto:

firebase deploy

Según la configuración predeterminada, firebase deploy crea una actualización para todos los recursos que se pueden implementar en el directorio de tu proyecto. Para implementar servicios o funciones específicos de Firebase, usa la implementación parcial.

Ten en cuenta que para implementar recursos desde un directorio de proyecto, este debe tener un archivo firebase.json. El comando firebase init crea este archivo automáticamente.

De manera opcional, puedes agregar un comentario a cada una de tus implementaciones. Este aparecerá con otra información de implementación en la página de Firebase Hosting de tu proyecto. Por ejemplo:

firebase deploy -m "Deploying the best new feature ever."

Conflictos de implementación de reglas de seguridad

En el caso de Firebase Realtime Database, Cloud Storage para Firebase y Cloud Firestore, puedes definir reglas de seguridad ya sea en el directorio de tu proyecto local o en Firebase console.

Otra opción para evitar conflictos de implementación es usar la implementación parcial y solo definir reglas en Firebase console.

Cuotas de implementación

Es posible (aunque poco probable) que excedas una cuota que limite la tasa 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. A fin de solucionar estos problemas, prueba usar la implementación parcial o solicitar aumentos de cuotas para servicios de Firebase específicos. Por ejemplo, la cuota Solicitudes de escritura cada 100 segundos por usuario podría ayudar a resolver el error 429 de Cloud Functions citado anteriormente.

Revierte una implementación

Puedes revertir una implementación de Firebase Hosting en la página de Firebase Hosting de tu proyecto. Para ello, selecciona la acción Revertir a fin de que se realice la actualización correspondiente.

En este momento, no es posible revertir actualizaciones de reglas de seguridad de Firebase Realtime Database, Cloud Storage para Firebase o Cloud Firestore.

Implementa servicios de Firebase específicos

Si solo quieres implementar servicios o funciones de Firebase específicos, puedes usar una lista de elementos separados por comas en una marca del comando firebase deploy. Por ejemplo, el siguiente comando implementa contenido de Firebase Hosting y reglas de seguridad de Cloud Storage.

firebase deploy --only hosting,storage

La siguiente tabla enumera los servicios y funciones disponibles para la implementación parcial. Los nombres en las marcas corresponden a las claves en tu archivo de configuración firebase.json.

Sintaxis de la marca Servicio o función que se implementa
--only hosting Contenido de Firebase Hosting
--only database Reglas de Firebase Realtime Database
--only storage Reglas de Cloud Storage para Firebase
--only firestore Índices y reglas de Cloud Firestore
--only firestore:rules Reglas de Cloud Firestore
--only firestore:indexes Índices de Cloud Firestore
--only functions Cloud Functions para Firebase (es posible que existan versiones más específicas de esta marca)

Implementa funciones específicas

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

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

Otra opción es reunir las funciones en grupos de exportación en tu archivo /functions/index.js. Agrupar funciones te permite implementar varias de ellas con un solo comando.

Por ejemplo, puedes escribir las siguientes funciones para definir un groupA y un groupB:

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

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

En este ejemplo, un archivo individual functions/groupB.js contiene funciones adicionales que definen específicamente las funciones de groupB:

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

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

En este ejemplo, puedes implementar todas las funciones de groupA si ejecutas el siguiente comando desde el directorio de tu proyecto:

firebase deploy --only functions:groupA

O puedes indicar una función específica dentro de un grupo con solo ejecutar el siguiente comando:

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

Borra funciones

Firebase CLI admite los siguientes comandos y opciones para borrar funciones implementadas previamente:

  • Borrar todas las funciones que coincidan con el nombre especificado en todas las regiones:

    firebase functions:delete function1-name

  • Borrar una función especificada que se ejecuta en una región no predeterminada:

    firebase functions:delete function1-name --region region-name

  • Borrar más de una función:

    firebase functions:delete function1-name function2-name

  • Borrar un grupo de funciones especificadas:

    firebase functions:delete group-name

  • Omitir el mensaje de confirmación:

    firebase functions:delete function1-name --force

Configura tareas de secuencia de comandos previas y posteriores a la implementación

Puedes conectar secuencias de comandos de shell al comando firebase deploy para realizar 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 cuándo se implementa contenido nuevo del sitio en Firebase Hosting.

Para configurar hooks previos o posteriores a la implementación, agrega secuencias de comandos de Bash al archivo de configuración firebase.json. Puedes definir secuencias de comandos breves directamente en el archivo firebase.json o puedes consultar otros archivos que se encuentren en el directorio de tu proyecto.

Por ejemplo, la siguiente secuencia de comandos es la expresión de firebase.json para una tarea posterior a la implementación que envía un mensaje de Slack cuando se completa correctamente una implementación en Firebase Hosting:

"hosting": {
  // ...

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

El archivo de la secuencia de comandos messageSlack.sh reside en el directorio del proyecto y es similar al siguiente:

curl -X POST -H 'Content-type: application/json' --data '{"text":"$1"}'
     \https://Slack-Webhook-URL

Puedes configurar los hooks predeploy y postdeploy para cualquiera de los activos que puedes implementar. Ten en cuenta que ejecutar firebase deploy activa todas las tareas previas a la implementación y posteriores a ella en el archivo firebase.json. Para ejecutar solo aquellas tareas asociadas con un servicio de Firebase específico, usa comandos de implementación parcial.

Los hooks predeploy y postdeploy 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 un hook previo a la implementación no se completa según lo previsto, 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: La ubicación del directorio que contiene los recursos de Hosting o Cloud Functions que se implementarán (solo para las secuencias de comandos hosting y functions)

Administra alias de proyectos

Puedes asociar varios proyectos de Firebase con el mismo directorio de proyecto. Por ejemplo, es posible que desees usar un proyecto de Firebase para staging 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 alias, además de crear otros nuevos.

Agrega un alias de proyecto

Cuando seleccionas un proyecto de Firebase durante la inicialización del proyecto, su alias se denomina default automáticamente. Sin embargo, para permitir que los comandos específicos de un proyecto se ejecuten con un proyecto de Firebase diferente, pero usen el mismo directorio del proyecto, ejecuta el siguiente comando desde el directorio del proyecto.

firebase use --add

Este comando te indica que selecciones otro proyecto de Firebase y que le asignes un alias definido. Las definiciones de alias se escriben en un archivo .firebaserc dentro del directorio de tu proyecto.

Usa alias de proyectos

A fin de usar alias de proyectos de Firebase definidos, ejecuta cualquiera de los siguientes comandos desde el directorio del proyecto.

Comando Descripción
firebase use Muestra una lista de los alias definidos actualmente para el directorio del proyecto
firebase use alias_or_projectID Cambia los alias del directorio del proyecto
firebase use --clear Quita el alias “usado” actualmente y dirige todos los comandos al alias default
firebase use --unalias alias Quita un alias del directorio del proyecto

Mientras usas un alias, todos los comandos específicos del proyecto (como firebase deploy o firebase data:get) se ejecutan en el proyecto de Firebase “usado” actualmente. Si se definió solo un alias en tu directorio del proyecto, entonces, cualquier comando específico del proyecto se ejecutará de forma automática con ese alias.

Control de código fuente y alias de proyectos de Firebase

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. Sin embargo, en el caso de los proyectos de código abierto o las plantillas de inicio, en general, no debes registrarlos en el archivo .firebaserc.

Si tienes un proyecto de desarrollo que solo tú usas, puedes pasar la marca --project con cada comando o ejecutar firebase use projectID sin definir el proyecto de Firebase como alias.

Administra varias instancias de Firebase Realtime Database

Si un solo proyecto tiene varias instancias de Realtime Database, usa la opción --instance instance-name para interactuar con la instancia de bases de datos no predeterminada, instance-name.firebaseio.com.

Los siguientes comandos admiten la opción --instance:

Comando
database:profile
database:remove
database:push
database:set
database:update
database:get

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 Configura un nuevo proyecto de Firebase en el directorio actual. Este comando creará un archivo de configuración firebase.json en el 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 el código y los activos del directorio del proyecto en tu proyecto de Firebase. En el caso de Firebase Hosting, se requiere un archivo de configuración firebase.json.
serve Inicia un servidor web local con tu configuración de Firebase Hosting. En el caso de Firebase Hosting, se requiere un archivo de configuración firebase.json.

Comandos de Realtime Database

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 obtener 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 obtener detalles.