César Augusto Cortés Labrada
Cristian Blandon
German Tellez Vanegas
Katherin Guerrero
Hector suarez
Andre Huaman Yovera
Kenneth Angulo L
Bryan Castano
Johanna Marcela Orjuela Flórez
Johanna Marcela Orjuela Flórez
Diego Reyes Cabrera
Andre Huaman Yovera
Rodrigo Rojas Candia
Diego Andrés Rojas Pinzón
Diego Andrés Rojas Pinzón
Katherin Guerrero
Andre Huaman Yovera
Diego Reyes Cabrera
Rubén Ernesto Aragón Gil
Mateo Zarate
posthtml-include es un plugin de parcel o es cualquier otra dependencia que puedes descargar con npm install en cualquier otro proyecto? La cosa es que a veces no sé si algo es funcionalidad del empaquetador o es sólo una herramienta que añadimos al empaquetador.
No es propio de Parcel... Se puede usar con otros empaquetadores como Webpack.
Parece que ninguna imagen de la API de platzi está funcionando actualmente
A mi tampoco me funciona, así que estoy usando otra API Fake Store API
Para los que no se les realice automaticamente la descarga de "posthtml-include"...deberan instalarlo manualmente con--> npm install -D post posthtml-include
El atributo "defer" se utiliza en la etiqueta de script para indicar al navegador que el archivo JavaScript externo debe ser descargado en paralelo con el análisis del documento HTML, pero debe ser ejecutado después de que se complete el análisis del HTML. . Cuando un navegador encuentra una etiqueta de script sin el atributo "defer" o "async", detiene el análisis del HTML, descarga el archivo JavaScript externo y luego lo ejecuta antes de continuar con el análisis del HTML. Esto puede llevar a un retraso en la renderización y la interactividad de la página. . Al agregar el atributo "defer" a la etiqueta de script, le estás diciendo al navegador que continúe analizando y renderizando el HTML mientras el archivo JavaScript se descarga en segundo plano. Una vez que se completa la descarga del archivo JavaScript, se ejecuta en el orden en el que aparece en el HTML, pero después de que se haya completado el análisis del HTML. . El uso de "defer" es útil cuando deseas asegurarte de que el archivo JavaScript se ejecute después de que se haya cargado todo el contenido HTML y se hayan construido y registrado los elementos necesarios en el DOM. Esto puede ser beneficioso si tu script depende de la presencia de ciertos elementos HTML o si deseas evitar bloquear la renderización inicial de la página.
¿Por qué Parcel añade hashes al compilar?
Esas cadenas de caracteres aleatorios (hashes) que se añaden a tus archivos compilados en la carpeta dist son una técnica fundamental conocida como cache busting (invalidación de caché). Cuando un usuario visita tu sitio, su navegador guarda los archivos CSS y JS para cargar la página más rápido en el futuro.
Si actualizas tu código pero los nombres de los archivos siguen siendo exactamente los mismos, el navegador del usuario probablemente cargará las versiones antiguas almacenadas en caché. Al generar un hash único basado estrictamente en el contenido del archivo (por ejemplo, index.a1b2c3.js), Parcel asegura que el nombre del archivo cambie únicamente cuando el código interno haya sido modificado. Esto obliga al navegador a descargar el código nuevo de inmediato, garantizando que tus usuarios siempre vean la versión más reciente de tu aplicación.
Hola, si bueno, mirad que la cosa ha camibnado mucho , ahora parcel 2 hace esto dieferente. eñ archivo .posthtmlrc : debe ser asi :
module.exports = { plugins: { "posthtml-include": { root: __dirname + "/src" } } };
El package.json debe ser asi :
{ "name": "parcel", "version": "1.0.0", "description": "", "source": "src/index.html", "scripts": { "dev": " parcel serve --port 8080 src/index.html", "build": " parcel build src/index.html --public-url ./", "deploy": "gh-pages -d dist" }, "keywords": [], "author": "", "license": "ISC", "devDependencies": { "parcel": "^2.15.4", "posthtml-include": "^2.0.1", "gh-pages": "^4.0.0" } }
$ npm run dev
> parcel@1.0.0 dev
> parcel serve --port 8080 src/index.html
Server running at http://localhost:8080
Ya funciona desde de dos horas luchando con esto :
Bien, es algo frustrannte que las tecnologias cmabien tan rapido, mas alla del alcance de este curso, el Profesor @gndx es excelente , Yo me gustan todos sus cursos, el es un buen maestro, sol oque este ausnto de las neuvas actualziaciones con parcel 2 se salen de las manos de platzi, Yo entiendo que no pueden hacer cursos nuevos cada vez que sale una neuva actualziacion , por eso esta la comunidad, ojala esto sirva para que los siguientes estudiantes en 2025 + les funcione y no pasen mal rato.
Para incluir archivos HTML en Parcel sin usar <include src="partials/header.html"></include>, puedes optar por el plugin posthtml-include. Primero, asegúrate de tenerlo instalado en tu proyecto:
npm install posthtml-include --save-dev
Luego, crea un archivo .posthtmlrc en la raíz de tu proyecto y configura el plugin de la siguiente manera:
{ "plugins": [ { "include": { "root": "./src" } } ] }
Con esta configuración, podrás usar la sintaxis de inclusión en tu index.html así:
<include src="partials/header.html"></include>
Esto debería funcionar sin problemas en tu proyecto, permitiéndote mantener tu estructura modular.
Para qué se usa el flag --public-url?
El flag "--public-url" se utiliza en la herramienta de construcción de paquetes Parcel para especificar la URL base pública de los archivos generados durante el proceso de construcción. . Cuando usas Parcel para construir tu proyecto, crea una estructura de directorios de salida que contiene los archivos HTML, CSS, JavaScript y otros recursos necesarios para tu aplicación. Estos archivos están enlazados entre sí mediante rutas relativas, por ejemplo, enlaces a archivos CSS o referencias a imágenes. . El flag "--public-url" te permite especificar una URL base que se utilizará como prefijo en las rutas relativas de los archivos generados. Esto es especialmente útil si planeas alojar tu aplicación en un dominio o subdirectorio específico. . Por ejemplo, si usas "--public-url /my-app/", todos los archivos generados tendrán enlaces y referencias que comienzan con "/my-app/". Esto es útil cuando despliegas tu aplicación en un subdirectorio específico en tu servidor. . En resumen, el flag "--public-url" te permite definir la URL base que se utilizará para resolver las rutas relativas de los archivos generados durante la construcción de tu proyecto con Parcel.
Profesor necesito ayuda al momento de ejecutar el código me dice falta un Target declared here y le mandare la foto de código.
Hola no puede hacer este ejercicio, clone el repo del profe, hice un hola mundo sencillo haber si era cosa de dependencias pero nada, cuando ejecuto el npm run start o el npm run build en niguno funciona, no crea la carpeta dist, y no me genera un error como tal, lo unico que medio me solucione y no se como fue instalar el parcel-bundler y luego borralo del archiv, eso me permitio ejecutar pero lo volvi a hacer con algo mas "grande" como este proyecot y no funciono, entonces no se que es.
codigo del package.json { "name": "parcel-project", "version": "1.0.0", "scripts": { "start": "parcel src/index.html", "build": "parcel build src/index.html --public-url ./", "deploy": "gh-pages -d dist" }, "keywords": [], "author": "", "license": "ISC", "description": "", "dependencies": { "guess-word-random": "^1.0.1" }, "devDependencies": { "parcel": "^2.12.0", "posthtml-include": "^2.0.1" } } ```y el resto de codigo : ```js html: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <link rel="stylesheet" href="style.css"> <title>Document</title> <script type="module" src="index.js" defer></script> </head> <body class="flexCenter"> <main class="flexCenter"> <h2>Bienvenido al Juego, debes adivinar la palabra</h2> <p>Debes usar las Tildes</p> <p id="lifes"></p> <p id="pistas"></p> <input type="text" placeholder="Que palabra soy ?" id="word"> <button id="button">Confirmar</button> </main> </body> </html> ``````js Js: import { palabra, clues} from './generateWord'; // const { word } = require('guess-word-random'); // const resultado = word(); // const palabra = resultado.laPalabra; // const clues = resultado.pistas; console.log({palabra,clues}); let pistas = document.getElementById('pistas'); let input = document.getElementById('word'); let boton = document.getElementById('button'); let vidasDisplay = document.getElementById('lifes'); let vidas = 3 vidasDisplay.innerText = `Tienes ${vidas} vidas`; let palabraSecreta = palabra; function elecionPistas(){ let numeroClue = Math.floor(Math.random()*clues.length); pistas.innerText = (`Pista: ${clues[numeroClue]}`) clues.splice(numeroClue, 1) } elecionPistas() boton.addEventListener('click' ,confirmar) function confirmar(){ let respuesta = input.value; input.value = '' if(respuesta === palabraSecreta){ alert('Genial, adivinaste la palabra.') location.reload(true); }else if( vidas === 1){ alert(`No adivinaste, la plabra era: ${palabraSecreta}`) location.reload(true); }else{ alert('No es la palabra') vidas -= 1 vidasDisplay.innerText = `Tienes ${vidas} vidas` elecionPistas() } } ``````js el uso de una dependencia que cree: const { word } = require('guess-word-random'); const resultado = word(); export const palabra = resultado.laPalabra; export const clues = resultado.pistas; ```el resto son estilos pero dudo que falle por eso. ```js style:*{ margin: 0; padding: 0; box-sizing: border-box; } body{ width: 100%; height: 100vh; background-image: linear-gradient(to right top, #6fdce3, #00bdea, #0099f2, #006ee9, #5c2fc2); padding: 10px; } .flexCenter{ display: flex; justify-content: center; align-items: center; } main{ width: 420px; height: 500px; border: 1px solid white; border-radius: 15px; padding: 10px; flex-direction: column; gap: 30px; text-align: center; box-shadow: 10px 10px 48px -7px rgba(0,0,0,0.75); } h1{ color: white; text-shadow: -1px -1px 0 #000, /* Top left */ 1px -1px 0 #000, /* Top right */ -1px 1px 0 #000, /* Bottom left */ 1px 1px 0 #000; /* Bottom right */ } input{ width: 220px; height: 40px; text-align: center; border-radius: 10px; } button { text-decoration: none; position: relative; border: 1px solid white; font-size: 14px; font-family: inherit; cursor: pointer; color: #fff; width: 9em; height: 3em; line-height: 2em; text-align: center; background: linear-gradient(90deg, #03a9f4, #f441a5, #ffeb3b, #03a9f4); background-size: 300%; border-radius: 30px; z-index: 1; } button:hover { animation: ani 8s linear infinite; border: none; } @keyframes ani { 0% { background-position: 0%; } 100% { background-position: 400%; } } button:before { content: ""; position: absolute; top: -5px; left: -5px; right: -5px; bottom: -5px; z-index: -1; background: linear-gradient(90deg, #03a9f4, #f441a5, #ffeb3b, #03a9f4); background-size: 400%; border-radius: 35px; transition: 1s; border: 1px solid white; } button:hover::before { filter: blur(20px); } button:active { background: linear-gradient(32deg, #03a9f4, #f441a5, #ffeb3b, #03a9f4); } p{ color: purple; font-size: 24px; font-weight: bold; }
Volvi despues de gastar casi 8 horas buscando el error o la solucion, siempre me arrojaba punycode deprecated, mire y averigue que era y decian que la version de node tenia un inconveninete con este modulo de punycode, pero era raro por que fuera el proyecto que fuera me generaba error, entonces lo que hice fue pasar de node 22.x.x a node 20.x.x y ya se arreglo, esto me supongo que a medida que salen nuevas versiones pueden surgir errores, entonces trabajare con la version lts
Tuve problemas al desplegar la app. No me reconocía los archivos .js ni .css, tuve que ir al index.html, el que está en la carpeta <u>dist</u> y cambiar la ruta, el empaquetado me lo entregó así "/index.blablabla.js" y lo cambié a "index.blablabla.js". De esta forma si sirvió cuando lo desplegué,
Otra cosa: Las imágenes en la Fake API no están funcionando. yo usé otra API, pero bueno, que se yo, revisen eso por ahí a ver si lo pueden solucionar.
Saludos
La elección de puertos como el 3000, 8000 o 8080 para probar una web con herramientas como Webpack no está relacionada directamente con Webpack en sí, sino más bien con las convenciones y estándares establecidos en el mundo del desarrollo web.
En el desarrollo web, los números de puerto 3000, 8000 y 8080 se consideran comúnmente como puertos utilizados para servir aplicaciones en entornos de desarrollo o pruebas locales. Estos puertos suelen estar menos ocupados y son menos propensos a entrar en conflicto con otros servicios que se ejecutan en el sistema operativo.
Aquí hay una breve explicación de cada uno de estos puertos:
Puerto 3000: Es comúnmente utilizado por servidores de aplicaciones web basadas en Node.js. Muchos frameworks y herramientas populares, como Express.js, suelen usar este puerto de forma predeterminada. Es una elección popular debido a que generalmente no está reservado para ningún servicio conocido y no suele haber conflictos.
Puerto 8000: A menudo se utiliza para servir aplicaciones web cuando el puerto 80, el puerto predeterminado para HTTP, está ocupado o se requieren permisos especiales. Este puerto es ampliamente utilizado por servidores de desarrollo, como el servidor web incorporado de Python, para ejecutar aplicaciones web localmente.
Puerto 8080: También es un puerto comúnmente utilizado para probar aplicaciones web localmente. Muchos servidores web de desarrollo y herramientas de desarrollo, como Apache Tomcat y JBoss, suelen usar este puerto de forma predeterminada.
En resumen, la elección de estos puertos está basada en convenciones establecidas en el desarrollo web y su uso generalizado para pruebas y desarrollo local. Sin embargo, estos puertos no son una restricción y puedes elegir cualquier puerto disponible en tu sistema para ejecutar tu aplicación web, siempre y cuando no esté siendo utilizado por otro servicio.
Quise experimentar con la instalación automatica de dependencias, así que creé un archivo .babelrc con un preset básico. Lo que me dijo Parcel me sorprendió:
Gran curso Oscar! felicitaciones al Platzi team