Despliegue con Firebase Hosting
Clase 20 de 21 • Curso de Fundamentos de Angular
Contenido del curso
Clase 20 de 21 • Curso de Fundamentos de Angular
Contenido del curso
Matias Acosta
Luis Eduardo
Christian Eduardo Ramirez Castillo
EDGAR MERCADO GARCIA
Camilla Bachna
EDGAR MERCADO GARCIA
Elber Liebermen
ELKIN YESID MORENO VELEZ
Mariano Tribuj
Andres Felipe Pinto Becerra
Harold Gama
Giancarlos Guedez
Manuel Alvarez
Santiago Giorgetti
Orlando Daniel Montes Antonio
Carlos Eduardo Gomez García
Kevin Bueno
Edinson Colonia Paez
Nicolas Molina
German Pinilla
Jully Evangelina Flórez Fonseca
Fredy Antonio pelaez castañeda
CARLOS ALBERTO WILSON PEREZ
Oscar Bravo
Jackeline Edith García Serna
Alejandro Rico García
Alejandro Rico García
Gabriel Ortiz
Gustavo Pú
Álvaro Sánchez García
Julian David Guzmán Infante
César Araucano
Julian Franco
César Araucano
Daniel Díaz
Binder Germán Ariel
Buenas!! El curso estuvo genial! Espero que lo hayan disfrutado!
Aqui debajo les comparto mi resumen general del curso!
Les recomiendo que lo copien y lo guarden en un archivo .md, ya luego pueden convertirlo a pdf desde aqui
Curso de fundamentos de Angular. Platzi
Estructura de un proyecto
Archivos internos
.browserslistrc: Indica a angular en que versiones tiene que ser compatible tu aplicacion
.editorconfig Tiene mas que ver con trabajar en equipo. Sirve para configurar las reglas de desarrollo del equipo. Por ejemplo la indentacion, etc. Para que este archivo funcione debes de instalar en VsCode un plugin llamado EditorConfig for VS Code
tsconfig.json Tiene que ve con la configuracion que tiene Angular con TypeScript
angular.json Es donde podemos manejar diferentes ambientes. Por ejemplo: podemos tener un ambiente de staging y un ambiente de QA (testing). En la seccion de budgets podemos configurar cual es el tamaño que deberia tener normalmente nuestra aplicacion
karma.conf.js Es para correr unit testing
package.json Las versiones que estamos utilizando
.nvmrc Sirve para especificar la version de node en la cual corre nuestro proyecto. Si no esta creada simplemente podemos crearla
Property Binding
Su uso es para configurar propiedades en un elemento html
<button [disabled]="btnDisabled"> Click me </button>
Event Binding
Con parentesis, encerramos el evento que queremos capturar
<button (click)="onClick()"> Click me </button>
Data Binding
Es una fusion entre escuchar un evento (Event Binding) y escuchar una propiedad (Property Binding) En angular tenemos algo especial para esto, que es el:
Estructuras de control
<div *ngIf="condition; else elseBlock"> Content to render when condition is true. </div> <ng-template #elseBlock> Content to render when condition is false. </ng-template>
<li *ngFor="let item of items; index as i; trackBy: trackByFn">...</li>
<container-element [ngSwitch]="switch_expression"> <!-- the same view can be shown in more than one case --> <some-element *ngSwitchCase="match_expression_1">...</some-element> <some-element *ngSwitchCase="match_expression_2">...</some-element> <some-other-element *ngSwitchCase="match_expression_3">...</some-other-element> <!--default case when there are no matches --> <some-element *ngSwitchDefault>...</some-element> </container-element>
Template reference variables
Es una referencia a un elemento de nuestra aplicacion. Podemos acceder a esta referencia tanto desde nuestro typescript como desde el html. Las referencias pueden ser utilizadas en el TS recien desde el afterViewInit en el HTML solo podemos acceder a la variable despues de declararla, no antes. Pasos para utilizar template variables
<p #text> Random text </p>
Agregar la referencia al elemento HTML en el TS con @ViewChild
@ViewChild('text') text!:ElementRef;
Utilizar la refencia al elemento dentro afterViewInit, o en cualquier metodo que se ejecute luego de afterViewInit
ngAfterViewInit(){ console.log(this.text) this.text.nativeElement.innerHTML += "Hola desde TS" }
Estilos dinamicos dependiedo del estado de un elemento
Agregar clases dinamicas
Nos permite activar o desactivar una clase CSS, en un elemento, dependiendo de una condicion. Su sintaxis es la siguiente:
<p #text class='simple-text' [class.nameClass]='condition goes here'> Random text </p> <!--por ejemplo--> <p #text class='simple-text' [class.active]=' 1 == 1 '> Random text </p>
Como verificar que un elemento tiene uno o mas estilos concatenados
Con verificar que un elemento tiene estilos concatenados, me refiero a esto:
<p #text class='simple-text active' > Random text </p>
Esto podemos verificarlo en el CSS de esta forma:
.simple-text { background: red; color: white; opacity: 0; //Hace que sea invisible &.active{ opacity: 1; } }
Esto hace que, cuando nuestro elemento cuente con las clases simple-text y active al mismo tiempo, nuestra opacidad cambie a 1, es decir, que se muestre el elemento
Modificar estilos dinamicamente
Esto nos permite modificar un estilo especifico en el html, dependiendo de una condicion.
<p #text [style.font-style]="condicion ? 'true-value' : 'false-value'"> Random text </p>
Por ejemplo
<p #text [style.font-style]="condicion ? 'bold' : 'normal'"> Random text </p>
NgClass & NgStyle
Nos permite agregar varias clases y/o estilos de forma dinamica.
<p #text class='simple-text' [ngClass]="{ 'class-name-1': condition1, 'class-name-2': condition2 }"> Random text </p> <!--por ejemplo--> <p #text class='simple-text' [ngClass]="{ 'valid-class': input.lenght > 0, 'invalid-class': input.lenght == 0 }"> Random text </p>
<p #text class='simple-text' [ngStyle]="{ 'color': pStyles.color, 'background': pStyles.background }"> Random text </p>
En este ejemplo, pStyles es un objeto declarado en el TS del componente.
Creacion de un formulario desde HTML
<!-- Aqui se declara que es un formulario 'reactivo'. Esto nos sirve para comprobar que todos los campos esten completados --> <form #myForm="ngForm"> <input name="name" type="text"> <input name="lastname" type="text"> <input name="password" type="password"> <button type="submit" [disabled]=myForm.invalid> Enviar </button> </form>
Datos interesantes sobre Estilos
Compilar nuestra aplicacion para producccion
ng build
Buen resumen
gracias por el resumen, pero no entendi bien lo de .MD
ahora si lo agregue:
Comandos importantes: Instalar firebase:
npm install -g firebase-tools
comprobar versión:
firebase -V
Inicializar el proyecto:
firebase login
y
firebase init
nos va a preguntar cual servicio de firebase queremos
ng build
y finalmente
firebase deploy
buen resumen de los comando para agilizar el trabajo.
https://forms-2fe46.web.app/ No es el más bonito pero es trabajo honesto :D
¿ Cuando hablan de trabajo honesto a que se refieren ?
De lo contrario un código que hayas realizado por ti mismo personalmente pienso que no tiene nada que ver con la honestidad a no ser que los codificadores o programadores de hoy en día antes de hacer el código por si mismos sean deshonestos y acudan a los tres puntos que ya he mencionado con anterioridad.
Es del todo gratuito Firebase?
Hasta ciertos topes de consumo de los diferentes servicios de Firebase son gratis.
muy bien!!!! :)
Inicio de mi proyecto. https://propeta-dee5a.web.app/
Muy bueno, te felicito
Si yo quisiera hacerle modificaciones y que apareezcan en el hosting, solo debo escribir de nuevo "firebase deploy" no?
Sip, de todas maneras para confirmarlo puedes intentar a hacer el cambio y el deploy, debería funcionar :D
Sí
¿si despues agrego un nuevo componente como debo actualuzar con firebase para que este queda actualizado en el dominio que ya estaba creado?
Hola, solo debes hacer un ng build para preparar una siguiente versión para producción y luego la envías con el comando firebase deploy y listo!
++Despliegue con Firebase Hosting++
Url de mi proyecto: https://gp-store-57582.web.app/auth/sign-in
Llega el momento de hacer deployment a un ambiente productivo, y para esto usaremos firebase hosting.
++Configuracion de Firebase++
++NOTA:++ Esta operacion te pedira cuena de google, es decir un correo de gmail, asi que si lo tienes solo lo seleccionas y sino puedes crear un correo, pero es necesario.
Una vez inicie sesion con mi cuenta de gmail, me mostrara un listado con todos los proyectos que yo tengo en firebase asociados a mi cuenta de gmail, si es la primera vez logicamente no saldra ningun proyecto.
Le damos click a la opcion "Agregar proyecto" y automaticamente me abrira unas opciones de creacion divididas en 3 pasos:
++Paso 1++ - Definicion del nombre del proyecto en Firebase, puede ser el mismo de nuestro proyecto de Angular. Luego click en siguiente.
++Paso 2++ - Pantalla para gregar funciones de Google Analytics a nuestro proyecto.Vamos a clickear el toggle control para decirle que no deseamos agregar la opcion de Google Analytics. Luego click en siguiente.Monta una serie de servicios basados en cloud para nuestro proyecto
++Paso 3++ - Una vez terminado nos inidica que el proyecto ya esta listo, Luego click en continuar.
En el menu lateral podremos encontrar algunos de los servicios que nos ofrece Firebase, pero seleccionaremos en la opcion "Hosting"
Nos abrira una pantalla de configuracion de nuestro hosting con una serie de configuraciones:
npm install -g firebase-tools
NOTA: Los usaurios de MacOS y Linux, deben ejecutar el comando con sudo para que les permita instalar la dependencia.
Y comprobamos su instalacion con:
firebase -V
Regresamos al el sitio de firebase y le damos click en "sigueinte" en la configuracion.
firebase login
Lo que nos preguntara que si deseamos permitir que Firebase conozca nuestro uso como metricas, le decimos que si digitando "y" y enter
Y nos abrira una url en el navegador donde aparecera nuestra cuenta de gmail, y firebase nos preguntara que si deseamos permitir usar la cuenta para administar el host y otros permisos.
Volemos a nuestra terminal y veremos un mensaje donde nos inidica que todo fue correcto en cuanto al login en Firebase
Nos indica que devemos tambien ejecutar el comando:
firebase init
NOTA: Este comando lo debemos ejecutar en el mismo lugar donde esta nuestro proyecto, es decir donde ejecutamos ng serve, y para eso debemos usar la consola para navegar hasta nuestro proyecto
Luego nos preguntara cual servicio queremos agregar, seleccionamos la opcion de "Hosting: Configure files for Firebase Hosting and (optionally) set up GitHub Actions deploys" con la barra espaciadora y le damos enter.
Luego nos pregunta que si queremos crear un proyecto o usar uno existente. A lo cual seleccionaremos "Use an existing project"
Luego nos parecera la lista de proyectos que tenemos en nuestra cuenta, a lo cual seleccionaremos, la que creamos en los primeros pasos de configuracion
Nos preguntara cual queremos que sea la carpeta publica que desamos distribuir en el hosting, por defecto es la carpeta (public), le damos enter para aceptar que sea public
Nos pregunta que si desemos re-escribir las urls para el sitio en especifico, a lo que diremos que si con "y"
Y luego nos preguntara que si desemos hacer deployments con GitHub, a lo cual diremos que no ahora digitando "n"
Esto nos creara unos archivos en nuestro proyecto:
Directorio public: Un directorio llamado "public" que borraremos porque angular tiene su propio directorio de distribucion llamado "dist"
.firebaserc : Un archivo de configuracion donde se encuentra el nombre del proyecto que tenemos en Firebase.
firebase.json : En este archivo es donde configuraremos la ruta de donde se ubicaran nuestros archivos de distribucion.
Para generar nuestra publicacion para produccion usamos el comando:
ng build
Este comando nos generara y transpila todo nuestro proyecto, lo minifica, lo ofusca y optimiza nuestro proyecto para que funcione a mas alto nivel
Este comando nos creara en nuestro proyecto llamada "dist" en donde se encuentran los archivos que deseamos subir al hosting, en este caso nuestro proyecto
Ahora en el archivo en el archivo firebase.json en la propiedad "public", le vamos a asignar la ruta de los archivos de nuestro directorio "dist", asi que la cambiamos por "dist/my-project" y guardamos el archivo.
firebase deploy
Este comando sube todos nuestros archivos del dist al hosting pormedio de Firebase CLI
Al final firebase me termina de subir los archivos y me muestra en la consola una url en donde ya queda nuestro proyecto en linea con un dominio en https
Que chevere https://platzistore-b4806.web.app/
oye quedo super
Para usuarios de MacOS o Linux, el comando para instalar paquetes de NodeJs a nivel global debe comenzar con sudo:
sudo npm install -g firebase-tools
Excelente. Puedo usar Firebase hosting para hacer deploy de aplicaciones angular. Si el backend está en node.js y además tengo una base de datos mySql en un servidor local con la que interactúo a través de node y este a su vez interactúa con Angular. ¿Cúal sería la forma ideal de hacer el DEPLOY de toda la aplicación?
Listo!! en este caso estuve haciendo otro proyecto, pero este video me ayudo mucho a desplegarlo en Firebase https://peliculasghibli.web.app/index.html
Se ve el correo que trataron de ocultar!
específicamente cuando hace scroll
Mi versión de la página de Login/Registro hecha con MUI Firebase
Hola, disculpa podrías compartir tu codigo se ve interesante no sé si utilizaste Angular Material Muchas gracias
¿Cómo puedo borrar Firebase de mi pc? Instalé el programa en la carpeta erronea y quiero volver hacerlo pero no se qué comando usar. Gracias
npm uninstall -g firebase-tools
Tengo este error, algún consejo
PS C:\Users\User\angular\tienda> firebase deploy
=== Deploying to 'pokestore-207d0'...
i deploying hosting i hosting[pokestore-207d0]: beginning deploy... i hosting[pokestore-207d0]: found 13 files in dist/tienda
Error: Failed to list functions for pokestore-207d0
Tambié tengo el mismo error, lograste solucionar ?
no logre solucionarlo, empezare desde el inicio
Buen dia alguien sabe a que se debe este error no da mucha informacion y no me permite instalar el cli de firebase. Agradesco cualquier aporte
Llega el momento de hacer deployment, un lanzamiento de nuestra aplicación a un ambiente productivo. Para esto vamos a utilizar Firebase como hosting. Firebase es un suite de servicios para desarrolladores que pertenece a Google. Para usarla debemos:
Loguearnos en su página oficial con una cuenta de Google.
Comenzar -> Agregar proyecto.
Agregar nombre -> Continuar.
Nos va preguntar si queremos usar las análiticas de Google. Desactivamos la opción.
Nos va preguntar si queremos usar las análiticas de Google. Desactivamos la opción.
Se crea el proyecto y vamos a Compilación -> Hosting -> Comenzar.
Nos van a aparecer una serie de comandos que debemos ejecutar en nuestra consola:
"npm install -g firebase-tools" para instalar las herramientas de la CLI de Google. Esto se instala globalmente en nuestra computadora.
"firebase login" sirve para loguearnos en firebase con nuestra cuenta de gmail.
"firebase init" para iniciar el proyecto. (en este caso es necesario estar parados dentro de la carpeta de nuestro proyecto).
Seleccionamos la opción Hosting: configure files for firebase hosting and (optionally) set up Github Action deploys se selecciona con la barra espaciadora y luego enter.
Escogemos Use an existing project y seleccionamos el nombre del proyecto creado.
Luego respondemos las preguntas que nos hace la CLI de la siguiente manera, esto creará una carpeta public con un index.html dentro en la raíz de nuestro proyecto y dos archivos de configuración firebase.json y .firebasesrc.
Por último preparamos nuestro proyecto para un entorno productivo con el comando ng build esto creará la carpeta dist y dentro otra más con el nombre del proyecto. Ahora colocamos esa ruta dentro del archivo firebase,json editando la propiedad “public” Esto hará que nuestra aplicación se despliegue desde esa carpeta. Solo resta ejecutar el comando firebase deploy. Una vez concluido el proceso nos aparecerá una URL pública en la cual podemos visitar nuestro proyecto ya desplegado en internet.