Estas son las funcionalidades que ofrece la Línea de Comandos Firebase (CLI):
- Desplegar código y archivos estáticos de tus proyectos Firebase
- Ejecutar un servidor local para tu sitio en Firebase Hosting
- Interactuar con los datos de tu base de datos Firebase
- Importar/Exportar usuarios a o desde Firebase Auth
Para empezar a utilizar Firebase (CLI), puedes leer a continuación la lista completa de comandos o chequear la documentación específica para el Hosting.
Para instalar Firebase CLI, primero necesitas estar registrado en Firebase.
Después necesitas instalar Node.js y npm. Cabe destacar que instalar Node.js debe instalar npm también.
Una vez npm instalado, puedes obtener Firebase CLI con tan sólo ejecutar el siguiente comando:
npm install -g firebase-tools
Esto te va a permitir acceder de manera global al comando firebase
.
El comando firebase --help
muestra la lista de comandos disponibles y firebase <comando> --help
muestra los detalles de un comando individual.
Si un comando es específico a un proyecto, debes estar dentro del directorio del proyecto con un alias activo de dicho proyecto o especificar la id del proyecto Firebase con -P <project_id>
.
A continuación una breve lista de los comandos disponibles y sus funciones:
Comando | Descripción | Detalle |
---|---|---|
login | Autentica tu cuenta Firebase. Requiere acceso al navegador web. | ➡️ |
logout | Cierra la sesión actual de Firebase CLI. | ➡️ |
login:ci | Genera un token de autenticación para uso en entornos no-interactivos. | ➡️ |
list | Muestra una lista de todos tus proyectos Firebase. | ➡️ |
setup:web | Muestra la configuración para el SDK Firebase JS. | ➡️ |
use | Activa un proyecto Firebase; gestiona alias del proyecto. | ➡️ |
open | Abre en el navegador recursos relevantes del proyecto. | ➡️ |
init | Configura un nuevo proyecto Firebase en el directorio actual. Este comando creará un archivo de configuración firebase.json en dicho directorio. |
➡️ |
help | Muestra información de ayuda sobre el CLI o comandos específicos. | ➡️ |
Agrega --no-localhost
para iniciar sesión (por ejemplo: firebase login --no-localhost
) copiando y pegando código en vez de utilizar la autenticación a través de tu navegador. Un caso de uso podría ser si te conectas a una instancia mediante SSH, y necesitas autenticarte a Firebase en dicha máquina.
Estos comandos te permitirán desplegar e interactuar con tu sitio en Firebase Hosting.
Comando | Descripción | Detalle |
---|---|---|
deploy | Despliega tu proyecto Firebase. Depende de la configuración en firebase.json y el directorio local de tu proyecto. |
➡️ |
serve | Inicia un servidor local con la configuración de tu Firebase Hosting. También depende de firebase.json . |
➡️ |
Comando | Descripción | Detalle |
---|---|---|
auth:import | Importa lotes de perfiles hacia Firebase desde un archivo de datos. | ➡️ |
auth:export | Exporta lotes de perfiles desde Firebase hacia un archivo de datos. | ➡️ |
Aquí puedes encontrar la documentación detallada.
Comando | Descripción | Detalle |
---|---|---|
database:get | Trae datos desde la base de datos del proyecto actual y la muestra como JSON. Soporta consultas en datos indexados. | ➡️ |
database:set | Reemplaza todos datos en una locación especificada de la base de datos del proyecto actual. Toma como entrada un archivo, STDIN o un argumento de la línea de comandos. | ➡️ |
database:push | Agrega nuevos datos a una lista en una locación especificada de la base de datos del proyecto actual. Toma como entrada un archivo, STDIN o un argumento de la línea de comandos. | ➡️ |
database:remove | Borra todos datos en una locación especificada de la base de datos del proyecto actual. | ➡️ |
database:update | Realiza una actualización parcial en una locación especificada de la base de datos del proyecto actual. Toma como entrada un archivo, STDIN o un argumento de la línea de comandos. | ➡️ |
database:profile | Analiza el uso de la base de datos y genera un reporte. | ➡️ |
Comando | Descripción | Detalle |
---|---|---|
firestore:delete | Borra documentos o colecciones de la base de datos del proyecto actual. Soporta borrado recursivo de subcolecciones. | ➡️ |
firestore:indexes | Muestra todos los indexs desplegados del proyecto actual. | ➡️ |
Comando | Descripción | Detalle |
---|---|---|
functions:log | Muestra los registros de las Cloud Functions desplegadas. | ➡️ |
functions:config:set | Define variables de entorno para el proyecto actual. | ➡️ |
functions:config:get | Obtiene las variables de entorno existentes en el proyecto actual. | ➡️ |
functions:config:unset | Elimina las variables de entorno definidas para proyecto actual. | ➡️ |
functions:config:clone | Copia las variables de entorno desde un proyecto hacia otro. | ➡️ |
experimental:functions:shell | Emula localmente Functions e inicia Node.js para que éstas puedan ser invocadas con datos de prueba. | ➡️ |
Comando | Descripción | Detalle |
---|---|---|
hosting:disable | Deshabilita el tráfico web del proyecto activo en Firebase Hosting. El mensaje "Site Not Found" aparecerá en la URL de tu proyecto luego de ejecutar este comando. | ➡️ |
Firebase CLI requiere de un navegador web para completar el proceso de autenticación, sin embargo es totalmente compatible con Integración Continua y otros entornos sin interfaz gráfica.
- En una máquina con navegador web, instala Firebase CLI.
- Ejecuta en la terminal
firebase login:ci
para autenticarte y mostrar un nuevo token de acceso (la sesión actual no se verá afectada). - Guarda el token de acceso en un lugar seguro pero accesible en tu sistema CI.
Existen dos maneras de utilizar este token al ejecutar comandos Firebase:
- Guarda el token como una variable de entorno llamada
FIREBASE_TOKEN
y automáticamente será utilizado. - Ejecuta todos los comandos en tu sistema de Integración Continua (CI) con la
bandera
--token <token>
.
El orden de procedencia para cargar el token es bandera
, variable de entorno, proyecto actual.
En cualquier máquina con Firebase CLI, ejecutar firebase logout --token <token>
revocará de inmediato el acceso al token especificado.
Firebase CLI puede ser también utilizado programáticamente como un módulo Node estándar. Esto sólamente puede ser logrado en tu máquina pero no en las Cloud Functions. Cada comando es expuesto como una función que toma Objectos como opciones y retorna Promesas. Por ejemplo:
const client = require('firebase-tools');
client.list()
.then(data => console.log(data))
.catch(err => {
// haz algo con el error.
});
client.deploy({
project: 'firebaseve',
token: process.env.FIREBASE_TOKEN,
cwd: '/ruta/al/directorio/del/proyecto'
}).then(() => {
console.log('¡Las reglas han sido desplegadas!');
}).catch(err => {
// haz algo con el error.
});