Bryan Figueroa
npm install @web/dev-server -D
Configurar un entorno de desarrollo local con Rollup requiere un paso extra que otros bundlers resuelven de forma nativa. Aquí aprenderás a integrar Web Dev Server, definir scripts de build y revisar qué genera Rollup al compilar un proyecto optimizado para producción.
¿Por qué Rollup necesita Web Dev Server para desarrollo local?
Rollup se enfoca en empaquetar, no en servir. Por eso necesitas una herramienta complementaria que levante un servidor, recargue cambios y abra el navegador automáticamente.
La alternativa recomendada es Web Dev Server, una dependencia que instalas como devDependency con el siguiente comando en terminal [00:32]:
bash npm install @web/dev-server -D
Esta herramienta cubre el vacío que deja Rollup en el flujo de trabajo cotidiano y te permite ver tus cambios en tiempo real sin recompilar manualmente.
¿Qué es Web Dev Server? Es un servidor de desarrollo ligero que sirve archivos, recarga cambios y se integra con bundlers como Rollup que no incluyen servidor propio.
¿Cómo configurar los scripts en package.json?
Una vez instalada la dependencia, abre tu archivo package.json y agrega dos scripts esenciales para mover el proyecto entre desarrollo y producción [01:10].
web-dev-server --config web-dev-server.config.js para levantar el entorno local.rollup -c para generar el compilado final con la configuración del proyecto.Con estos dos comandos cubres el ciclo completo: desarrollas con start y publicas con build. Cada uno apunta a un archivo de configuración distinto, lo que mantiene la lógica separada y ordenada.
¿Qué configuración necesita web-dev-server.config.js?
En la raíz del proyecto crea el archivo web-dev-server.config.js y exporta un objeto con las opciones del servidor [01:48]. Esta configuración define cómo se comporta tu entorno local mientras desarrollas.
Las propiedades clave que vas a definir son:
true para que resuelva módulos de Node correctamente.dist/index.html.js module.exports = { port: 3007, nodeResolve: true, open: true, watch: true, appIndex: 'dist/index.html', };
Esta configuración mínima ya te da un entorno funcional con hot reload y apertura automática del navegador.
¿Qué genera Rollup al ejecutar el build?
Al correr npm run build, Rollup procesa el proyecto en aproximadamente 18 milisegundos y deposita los archivos en la carpeta dist [02:55]. Y aquí viene lo interesante: el resultado va más allá de un simple bundle de JavaScript.
¿Qué archivos aparecen en la carpeta dist?
El build genera varios artefactos automáticamente, sin que tengas que copiarlos a mano:
Lo notable es que no tuviste que crear un template HTML manualmente. El plugin se encargó de inyectar los enlaces correctos.
¿Cómo se optimizan las imágenes en el bundle?
Una de las transformaciones más útiles es que la imagen del logo deja de ser un archivo independiente y se convierte en una variable embebida como bloque de datos en base64 [03:40]. Esto reduce peticiones HTTP y mejora el rendimiento de carga.
¿Qué significa que una imagen esté en base64? Es una forma de representar la imagen como texto dentro del código JavaScript, eliminando la necesidad de descargarla como archivo separado.
¿Cómo verificar que el entorno local funciona?
Con el build listo, ejecuta npm run start y el navegador abrirá la URL del servidor. Vas a ver tu aplicativo con el logo y los llamados a la API funcionando [04:30].
Si inspeccionas el DOM, encontrarás que el header fue creado con createElement, la imagen se inyectó como bloque base64 y los items renderizan sus cards con los datos de la API. Todo generado de forma automática por el flujo de Rollup.
Esta es la razón por la que Rollup es parte fundamental de proyectos como Svelte: produce bundles ligeros, optimiza recursos y mantiene una configuración explícita que tú controlas.
¿Cómo desplegar el proyecto en GitHub Pages?
Para cerrar el flujo, sube tu proyecto a un repositorio y publícalo. Los pasos son los mismos que aplicaste antes con otros bundlers:
gh-pages como dependencia de desarrollo.Después anímate a personalizarlo: ajusta el CSS, cambia la estructura, agrega más items o conecta otra API para mostrar información distinta. Déjame en los comentarios el enlace de tu proyecto y qué cambios hiciste.
Les recomiendo que agreguen estas opciones en el plugin de html en el archivo rollup.config.js:
html({ meta: [ { charset: "UTF-8" }, { name: "viewport", content: "width=device-width, initial-scale=1.0" } ] }),
Esto es para que en su archivo bundle.html cree las dos etiquetas meta de charset y de viewport que son muy importantes en cualquier proyecto web.
Bryan Figueroa
npm install @web/dev-server -D
Donovan RM
Para lograr el npm run build tuve que arreglar unas cosas primero.
}, "type": "module" }
Y cambiar el nombre del archivo de css que está en la ruta src/styles/ styles - por - style
y listo ya tengo el resultado en la carpeta dist
ANA RAMIREZ
gracias!!
Carlos Mario
rollup -c | --config <filename>
Usa un archivo de configuración; si no se especifica buscara por defecto el archivo rollup.config.js
Kenneth Angulo L
¿Es posible autogenerar el archivo HTML final?
Sí, y de hecho es una de las mejores prácticas en el desarrollo web moderno para evitar errores manuales. En lugar de crear un index.html estático y adivinar los nombres de los archivos generados (que a menudo cambian si usas hashes en los nombres para evitar el caché del navegador), puedes usar un plugin de HTML. Este plugin actúa como un molde dinámico: toma tu código empaquetado final, como bundle.js y bundle.css, y los inyecta automáticamente en un archivo HTML nuevo dentro de tu carpeta de salida. Además, puedes personalizar este proceso para agregar etiquetas <meta> para SEO, cambiar el <title> dinámicamente o inyectar scripts de analíticas, todo directamente desde tu configuración de JavaScript.
Uriel Solis Salinas
Andres Badillo
Les comparto mi proyecto y mi repositorio 😎
Kenneth Angulo L
¿Cómo detecta Rollup los cambios en vivo?
Para que tu servidor reaccione al instante, necesitas habilitar el modo de observación o watch mode. En tu archivo de configuración web-dev-server.config.js, simplemente agregas la propiedad watch: true. Esto actúa como un centinela que vigila constantemente tus archivos fuente. Cuando guardas un cambio en tu código, el servidor detecta la modificación y refresca automáticamente el navegador sin que tengas que hacerlo manualmente. Para que la experiencia sea completa y fluida, asegúrate de que tu script de build en el package.json también esté configurado para escuchar los cambios, de modo que el código se recompile en segundo plano y el servidor local siempre muestre la versión más reciente de tu trabajo al instante.
Johanna Marcela Orjuela Flórez
Humberto Delgado
npm run build
rollup@1.0.0 build rollup -c
(node:30956) Warning: To load an ES module, set "type": "module" in the package.json or use the .mjs extension.
(Use node --trace-warnings ... to show where the warning was created)
[!] RollupError: Node tried to load your configuration file as CommonJS even though it is likely an ES module. To resolve this, change the extension of your configuration to ".mjs", set "type": "module" in your package.json file or pass the "--bundleConfigAsCjs" flag.
Y agregue el type module a package.js y al ejecutar el npm run start me sale esto You are using CommonJS syntax such as "require" or "module.exports" in a config loaded as es module. Use import/export syntax, or load the file as a CommonJS module by using the .cjs file extension or by removing type="module" from your package.json. 😢
Leonardo Fonseca
Humberto Delgado
Muchas gracias
Guillermo Prituluk
Que lindo se siente saber solucionar un problema al leer el error <3
Diego Iberri Ramírez
Solo hice unos pequeños cambios en el CSS y agregué un poco más de productos para que no se sintiera tan vacía la web. A si quedo mi proyecto:
Rubén Ernesto Aragón Gil
Excelente video 😎👍
Alguien sabe por qué me sale este error al momento de querer hacer build? .
> rollup@1.0.0 build > rollup -c node:internal/modules/cjs/loader:903 throw err; ^ Error: Cannot find module 'node:process' Require stack: - /home/euss/programasCursosPlatzi/libreriasDependenciasDeJS/cursoIntroduccionEmpaquetadoresWeb/rollup/node_modules/rollup/dist/bin/rollup at Function.Module._resolveFilename (node:internal/modules/cjs/loader:900:15) at Function.Module._load (node:internal/modules/cjs/loader:745:27) at Module.require (node:internal/modules/cjs/loader:972:19) at require (node:internal/modules/cjs/helpers:88:18) at Module.<anonymous> (/home/euss/programasCursosPlatzi/libreriasDependenciasDeJS/cursoIntroduccionEmpaquetadoresWeb/rollup/node_modules/rollup/dist/bin/rollup:16:19) at Module._compile (node:internal/modules/cjs/loader:1083:30) at Object.Module._extensions..js (node:internal/modules/cjs/loader:1112:10) at Module.load (node:internal/modules/cjs/loader:948:32) at Function.Module._load (node:internal/modules/cjs/loader:789:14) at Function.executeUserEntryPoint [as runMain] (node:internal/modules/run_main:72:12) { code: 'MODULE_NOT_FOUND', requireStack: [ '/home/euss/programasCursosPlatzi/libreriasDependenciasDeJS/cursoIntroduccionEmpaquetadoresWeb/rollup/node_modules/rollup/dist/bin/rollup' ] }
. Llevo horas tratando de arreglarlo :c
Hola, tuve ese mismo problema y lo que terminé haciendo para resolverlo fue agregando al package,json la línea
"type": "module"
y lo resolvió, pero eso generó un conflicto con el web-dev-server que me mostró lo siguiente:
You are using CommonJS syntax such as "require" or "module.exports" in a config loaded as es module. Use import/export syntax, or load the file as a CommonJS module by using the .cjs file extension or by removing type="module" from your package.json.
Por tanto, fui a la documentación de dev-server y vi que cambiar el config del server a import/export syntax era super sencillo. Mi archivo web-dev-server.config.js quedó así:
export default { port: 3008, nodeResolve: true, open: true, watch: true, appIndex: "dist/index.html", };
Espero te sirva.