🚀 Holaaa hice este tutorial para quienes que desean desplegar su app de React en GitHub Pages, pero ya tienen otros proyectos usando GitHub Pages.
Es decir, quieren esta app en user.github.io/repo
o mi-dominio.com/repo
Introducción a React
¿Qué es React.js?
Conceptos fundamentales de React
Quiz: Introducción a React
Configurando el entorno de desarrollo para React
Análisis de dependencias en proyectos de React
Instalación de React y React DOM
Configuración de Webpack y Babel
Cambios en tiempo real con Webpack
React con CSS y Sass
Quiz: Configurando el entorno de desarrollo para React
Maquetación en React
Transformando HTML y CSS en componentes de React
Estilos en los componentes de React
Quiz: Maquetación en React
Páginas, rutas y componentes
React Router DOM
Navegación entre rutas
Header en todas las rutas
¿Qué es Atomic Design? Conoce los beneficios
Solución al reto: componentes y rutas de React Shop
Tipos de componentes en React: stateful vs. stateless
Imágenes y alias en Webpack
Quiz: Páginas, rutas y componentes
Lógica con React Hooks
React.useState
Toggle del menú
useEffect y consumo de APIs
Custom Hooks para la tienda
useRef y formularios
React Context
Completando el carrito de compras
Orden de compra
Calculando el precio total
Eliminando productos del carrito
Quiz: Lógica con React Hooks
Deploy
Cómo comprar tu dominio y conexión con Cloudflare
Automatizando el despliegue con GitHub Actions
Próximos pasos
Retos de React.js (bug hunters)
Continúa con el Curso Práctico de Next.js
No tienes acceso a esta clase
¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera
Aportes 23
Preguntas 21
🚀 Holaaa hice este tutorial para quienes que desean desplegar su app de React en GitHub Pages, pero ya tienen otros proyectos usando GitHub Pages.
Es decir, quieren esta app en user.github.io/repo
o mi-dominio.com/repo
Usar GitHub Pages:
listo ya pude… tutorial para deploy 08/02/2022
npm install gh-pages --save-dev
luego de instalar esta dependencia entonces en package.json:
{
"name": "reactpractico",
"version": "1.1.0",
"description": "react eshop",
"homepage": "https://rroderickk.github.io/reactPractico", //! lo importante
"main": ".src/index.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1",
"predeploy": "npm run build",
"deploy": "gh-pages -b master -d dist", //! -b para espeficar otra rama donde subira los archivos estaticos, -d para especificar la carpeta generada por el comando build
"start": "webpack serve",
"build": "webpack --mode production"
en webpack:
const path = require("path");
const HtmlWebpackPlugin = require("html-webpack-plugin");
const MiniCssExtractPlugin = require('mini-css-extract-plugin');
module.exports = {
entry: "./src/index.js",
output: {
path: path.resolve(__dirname, "dist"),
filename: "bundle.js",
publicPath: "./", //! para el despliegue lo importante es el punto
},
mode: 'development',
resolve: {
extensions: [".js", ".jsx"],
alias: {
'@components': path.resolve(__dirname, 'src/components/'),
'@containers': path.resolve(__dirname, 'src/containers/'),
'@hooks': path.resolve(__dirname, 'src/hooks/'),
'@pages': path.resolve(__dirname, 'src/pages/'),
'@routes': path.resolve(__dirname, 'src/routes/'),
'@context': path.resolve(__dirname, 'src/context/'),
'@moneyIn': path.resolve(__dirname, 'public/moneyIn/'),
'@styles': path.resolve(__dirname, 'src/styles/'),
'@icons': path.resolve(__dirname, 'public/icons/'),
'@img': path.resolve(__dirname, 'public/img/'),
'@logos': path.resolve(__dirname, 'public/logos/'),
},
},
module: {
rules: [
{
test: /\.(js|jsx)$/,
exclude: /node_modules/,
use: {
loader: "babel-loader",
},
},
{
test: /\.(png|jpg|svg|jpeg|web|svg)$/,
type: 'asset/resource',
generator: {
filename: "public/[hash][ext]",
},
},
{
test: /\.html$/,
use: [
{
loader: "html-loader",
},
],
},
{
test: /\.(css|scss)$/,
use: [
"style-loader",
"css-loader",
"sass-loader",
],
},
],
},
plugins: [
new HtmlWebpackPlugin({
template: "./public/index.html",
filename: "./index.html",
}),
new MiniCssExtractPlugin({
filename: '[name].css',
}),
],
devServer: {
static: {
directory: path.join(__dirname, 'public'),
},
compress: true,
port: 64340,
historyApiFallback: true,
}
}
y en tu router:
<BrowserRouter basename='/reactPractico'>
luego de estas configuraciones correr el comando:
npm run deploy
y luego en settings de tu repositorio setear la rama que habias configurado con el comando -b
deploy
Logré hacer el deploy. Lo malo es que ya tengo 80 años
#porlotanto
Les dejo el script que el profesor usa en el minuto 2:32.
name: Build and Deploy
on: [push]
jobs:
build-and-deploy:
runs-on: ubuntu-latest
steps:
- name: Checkout 🛎️
uses: actions/[email protected]
- name: Install and Build 🔧 # This example project is built using npm and outputs the result to the 'build' folder. Replace with the commands required to build your project, or remove this step entirely if your site is pre-built.
run: |
npm install
npm run build
- name: Deploy 🚀
uses: JamesIves/[email protected]
with:
branch: gh-pages # The branch the action should deploy to.
folder: build # The folder the action should deploy.
Si alguien desea ir mas aya con su proyecto ,me refiero a que los botones de my account , cerrar sesion , login etc los lleve a otra ruta como normalmente funciona en el localhost , les recomiendo que hagan deploy con netlify, ya que gh-pges no funciona bien con reactrouter da un error 404 (solo da error cuando esta desplegada en internet).
esto solo seria si su pagina aun no tiene backend y solo sea frontend como lo mia .
aqui dejo mi pagina desplegada con netlify y funcionando las rutas
pagina con netlify
GitHub Actions / Pages
Hice mi deploy solo en GitHub Pages. Mi pagina de mostraba en blanco, no cargaba el bundle.js. Para solucionar ese problema se debe agregar en webpack a la ruta publicpath un punto:
Con el ink de nuestra cuenta, barra, nombre del repositorio.
Despues no me cargaba las rutas.
Investigando encontre este video del por que no lo hacia y como solucinarlo.
Basicamente debemos cambiar el BrowserRouter por HashRouter en la App. Para ir a las paginas agregamos una#/nombreDeLaPagina
al final de la url. Ejemplo: https://juliobarriosdev.github.io/react-shop/#/login
Acá anexo mi proyecto desplegado y en producción.
Mi proyecto fue desplegado en Netlify y dominio obtenido mediante Hostinger.
Que tal campeon, buen dia…
gIThuB pAges. tiene problemas al momento de visualizar la pagina en la web, asi que use Netlify.
Para los que tienen problemas con el deploy (Que veo que ya son personas de hace meses) el tema es por el public path, si hacen exactamente lo que Oscar dice (Comprar el dominio y todo) no creo que tengan problemas, para poder usar solo gh pages necesitan hacer algunas cosas más para el deploy en el archivo de webpack, ya que sino no funcionará correctamente, tal vez aquí puedan entender que hacer
Profe, al parecer su sitio web no esta disponible 😣 www.https://www.reactshop.co/
Les recomiendo que lean los comentarios de los compañeros, me fueron utiles para desplegaqr mi protecto https://juli6464.github.io/my-react-store/
Ya pude desplegar comprando el dominio, configurando cloudflare y gh-pages. https://reactshoptest.co/
Me pasó es que como algunos compañeros no pude hacerlo solo con gh-pages (me cargaba el nav pero no el ProductList) y en local no me sale nada pero tampoco salen errores.
Se me rompio el proyecto, ni la consola ni la terminal me muestran error. No entiendo nada
Bueno yo la verdad quise probar otra cosa, ya tenia varias paginas en github pages, asi que quise probar el deploy de
Pude subir a Github pages esta app en el 6 de octubre de 2022 https://github.com/daniel-avilaxd/curso-practico-react02 . Y esto fue lo que cambie para poder subirlo. Ojala alguien me pueda explicar por qué funciona la 3 XD(Lo encontre en un comentario en Github)
module.exports = {
entry: "./src/index.js",
output: {
path: path.resolve(__dirname, "dist"),
filename: "curso-practico-react02/bundle.js",
publicPath: "/curso-practico-react02/",
clean: true
},
<AppContext.Provider value={initialState}>
<BrowserRouter basename={document.baseURI.substring(document.baseURI.indexOf(window.location.origin) + window.location.origin.length, document.baseURI.lastIndexOf('/'))}>
-Todavía no me funcionan las rutas jeje despues las arreglo. Lo que me importaba era que se viera.
-No se rindan compañ[email protected]🖖
Si alguien tiene problemas con los actions solo agrege dentro de la carpeta
.github/workflows/deploy.yml
Apenas ví el dominio en mi cerebro sonó un “Aveus página”, que cosa tan random
Really??? 29 minutes of class, it feels like 3 minutes 🤩
![]( parceros necesito ayuda, me sale este error en el DEPLOY no se como arreglarlo 😦
Hola Buenas noches, completado el despliegue!
Los aportes, preguntas y respuestas son vitales para aprender en comunidad. Regístrate o inicia sesión para participar.