No tienes acceso a esta clase

¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera

Despliegue de Proyectos en GitHub Pages paso a paso

14/15
Recursos

¿Cómo implementar un proyecto con GitHub Pages?

GitHub Pages es una fantástica herramienta que te permite exponer tus proyectos al mundo. Aquí te guiaremos paso a paso sobre cómo hacerlo siguiendo un tutorial desarrollado por un estudiante de Platzi. Prepárate y dale vida a ese proyecto que tanto has trabajado; ¡no te quedes con las ganas de mostrarlo!

¿Cuál es el primer paso?

Comienza instalando el paquete de GitHub Pages en tu proyecto. Asegúrate de estar dentro de la carpeta de tu proyecto antes de ejecutar los comandos necesarios para la instalación. Esto es crucial para que todo funcione perfectamente.

// Comando para instalar GitHub Pages
npm install gh-pages

¿Cómo configurar el package.json correctamente?

El siguiente paso esencial es actualizar el archivo package.json de tu proyecto para incluir la entrada de homepage. Esto es vital para que GitHub Pages sepa cómo encontrar tu aplicación.

Para ello, localiza el archivo package.json y asegúrate de que la entrada de homepage esté configurada correctamente con la URL adecuada:

"homepage": "https://platzi.github.io/machines/"

Verifica que los nombres de usuario y repositorio sean los correctos. En este ejemplo, el nombre es 'Machines' (con una 'S' extra) y el nombre de usuario es de Platzi.

¿Cómo crear los scripts de predeploy y deploy?

Dentro del archivo package.json, bajo los scripts, agrega dos nuevos scripts: predeploy y deploy. Estos scripts automatizarán el proceso de construcción y despliegue.

Aquí están los scripts que necesitas agregar:

"scripts": {
  "predeploy": "npm run build",
  "deploy": "gh-pages -d build"
}

Con el código listo en scripts, tu aplicación está casi lista para ser desplegada.

¿Cómo ejecutar los comandos de despliegue?

Regresa a tu terminal y ejecuta los siguientes comandos que harán uso de los scripts que acabas de añadir:

  1. Primero, ejecuta el script de prebuild que compilará tu aplicación:

    npm run predeploy
    
  2. Luego, ejecuta el script de deploy para enviar los archivos a GitHub Pages:

    npm run deploy
    

Al completar estos pasos, tu aplicación debería estar publicada. ¡Felicidades!

¿Cómo verificar que todo esté en orden en GitHub?

Ahora ve a GitHub, dirígete a la sección de Settings y busca la opción Pages. Aquí, selecciona la fuente GitHub Pages como el Source y guarda los cambios. Si todo ha ido bien, la URL pública de tu proyecto estará visible. Es hora de visitarla y disfrutar de tu trabajo en vivo.

Un detalle final: solucionar un bug conocido

Mientras exploras tu recién desplegada aplicación, verifica si hay pequeños bugs. Un ejemplo encontrado frecuentemente es que el componente Ticket muestra siempre el mismo país predeterminado, como Colombia, en lugar del que realmente se ha seleccionado. Te animamos a identificar y resolver este bug por ti mismo, reforzando tus habilidades de desarrollo.

¡Una vez completado todo este proceso, estarás listo para compartir con orgullo tu creación con el mundo! Anímate a dejar un comentario sobre tu experiencia, desafíos enfrentados y las soluciones que encontraste. Seguir perfeccionando y desplegando aplicaciones es una habilidad clave para cualquier desarrollador moderno. ¡Adelante y buena suerte en tu camino hacia el dominio del código!

Aportes 14

Preguntas 1

Ordenar por:

¿Quieres ver más aportes, preguntas y respuestas de la comunidad?

Aqui mi componente de tickets para que actualize el nombre del pais con el guardado en el context:

import React from 'react';
import './Tickets.css';

export const Tickets = ({ send, state }) => {
  const finish = () => {
    send('FINISH')
  };

  return (
    <div className='Tickets'>
      <p className='Tickets-description description'>Gracias por volar con book a fly 💚</p>
      <div className='Tickets-ticket'>
        <div className='Tickets-country'>{ state.context.selectedCountry }</div>
        <div className='Tickets-passengers'>
          <span></span>
          { state.context.passengers.map(person => (
            <p key={person}>{person}</p>
          )) }
        </div>
      </div>
      <button 
        onClick={finish} 
        className='Tickets-finalizar button'
      >Finalizar</button>
    </div>
  );
}; 

Dejo mi aporte al curso

Se añadieron algunas funcionalidades nuevas como la fecha, y país de origen, se mejoró la interfaz para la vista de los tickets.

https://alejou343.github.io/state-machine/

Hay un bug en el cual si pasan 5 segundos se eliminan los datos pero si se pone finalizar no, estuve intentando, pero al parecer es el action que se pone de primeras el que funciona, intente la solucion de alguien de los comentarios pero el bug se repite, solo que al revez, entonces esta fue mi solucion, que aunque funciona no entendi por que sucede pero funciona

 tickets: {
        after: {
          5000: {
            target: "initial",
            actions: "cleanContext",
          },
        },
        on: {
          FINISH: {
            target: "initial",
            actions: assign({
              selectedCountry: "",
              passengers: [],
            }),
          },
        },
      },

entonces, en lugar de llamar un ation exterior se hace desde el finish, con eso ambos terminan funcionando

así se resuelve el bug que la profesora mencionó en la clase
donde decía Colombia fijamente ponemos {context.selectedCountry} y listo

  <div className="Tickets-country">{context.selectedCountry}</div>

listo el proyecto con fecha de viaje por el momento
https://capable-duckanoo-95dec7.netlify.app/

Uruguay no'ma! 😂 Me encantó que eligiera Uruguay, aunque haya sido puro azar jaja, excelente curso
```js import React, { useContext } from "react"; import "./Tickets.css"; import { XStateContext } from "../XStateContext"; export const Tickets = () => { const { send, state } = useContext(XStateContext); const { passengers, selectedCountry } = state.context; const handleFinish = () => { send("FINISH"); }; return (

Gracias por volar con book a fly 💚

{selectedCountry}
{passengers.map((passenger) => { return

{passenger}

; })}
<button onClick={handleFinish} className="Tickets-finalizar button"> Finalizar </button>
); }; ```Reto completado, era usar el context

Dejo mi repo de React + typescript + vite + xtstate:
https://github.com/modoZen/booking-state-machine

Y la app
https://helpful-kangaroo-ed363c.netlify.app/

Dejo mi código de la app typescript + vite, especificamente del archivo

src/type/BookingMachine

import { Event, EventData, SingleOrArray, StateFrom } from 'xstate';
import { Country } from './Country';
import { bookingMachine } from '../machines/bookingMachine';

export interface BookingContext {
	passengers: string[];
	selectedCountry: string;
	countries: Country[];
	error: string;
}

export type BookingEvent =
	| { type: 'START' }
	| { type: 'CONTINUE'; selectedCountry: string }
	| { type: 'ADD'; newPassenger: string }
	| { type: 'DONE' }
	| { type: 'FINISH' }
	| { type: 'RETRY' }
	| { type: 'CANCEL' };

export interface Props {
	state?: StateFrom<typeof bookingMachine>;
	send?: (
		event: SingleOrArray<Event<BookingEvent>>,
		payload?: EventData,
	) => void;
}

Mi aporte al problema del país de destino 👍

export const Tickets = ({ send, context }) => {
  const finish = () => {
    send('FINISH')
  };

  return (
    <div className='Tickets'>
      <p className='Tickets-description description'>Gracias por volar con book a fly 💚</p>
      <div className='Tickets-ticket'>
        <div className='Tickets-country'>{context.selectedCountry}</div>
        <div className='Tickets-passengers'>
          <span></span>
          {context.passengers.map((person, idx) => {
            return <p key={idx}>{person}</p>
          })}
        </div>
      </div>
      <button onClick={finish} className='Tickets-finalizar button'>Finalizar</button>
    </div>
  );
};

También les comparto una forma de solucionar el problema de la lista de usuarios que quedan al darle finalizar.

      tickets: {
        after: {
          5000: {
            target: 'initial',
            actions: 'cleanContext',
          }
        },
        on: {
          FINISH: {
            target: 'initial',
            actions: 'cleanContext',
          },
        },
      },

Hay un bug muy extraño en el proyecto, cuando se le da a cancelar o finalizar no limpia el estado del array passengers, pero si lo hace cuando se deja pasar el tiempo de esperar de los 5 segundos

excelente

Muy buen curso!