Implementación de CSS en Proyectos Web con Webpack
Clase 13 de 16 • Curso de Single Page Application con JavaScript Vanilla
Contenido del curso
Clase 13 de 16 • Curso de Single Page Application con JavaScript Vanilla
Contenido del curso
Diego Bustos Kehdy
Juan Camilo Espitia
Luis Ruiz Ramos
Luis Ruiz Ramos
Enrique Orozco Gaytán
Marco Antonio González Arellano
Jhonny Lincol Quispe Navarro
Cesar Bello Bonilla
Sergio Abel Gordon Dolimpio
Carlos Roberto Villatoro Barrios
Luis Fernando Monroy Sovero
Karenn Yeraldin Hernández Duarte
Gonzalo Pimentel
Angélica Rocha
Juan Esteban Galvis
Enrique Devars
Santiago Duque
Daniel Goñas
Carlos Vallejo
Luigui Mario
Angel Cabrera
Juan Esteban García Giraldo
Diego Rodriguez
Omar Garrido García
Diego Alfonso Najera Ortiz
Juan Jose Vega
Diego Alfonso Najera Ortiz
sergio vargas
Roberto Carlos Martinez Loredo
Cesar Gabriel Mejias Farreras
Rubén Ernesto Aragón Gil
Jhonatan Estiven Becerra Pedrozo
Guadalupe Giovanni Hernández Medina
Luis Lira
Luis Lira
Jairo Merea Dueñas
Eliseo Ávila
Cristian Daniel Jesus Rios
Alejandro Ibarra Rodriguez
Julio Barrios
Francisco Toledo
Bryan Castano
Juan David Valencia
Héctor Eduardo López Carballo
Juan David Valencia
Si alguno le sale un error como a mi, cuando corremos npm run build. Puede deberse a que en la clase configuramos webpack con:
<code> new CopyWebpackPlugin([{ from: './src/styles/styles.css', to: '' }])
Pero después de harto rato debugeando , revise en la documentación y falta poner en CopyWebpackPluguin() la propiedad patterns. El código para resolver el error puede ser.
<code> new CopyWebpackPluguin({ patterns: [{ from: './src/styles/styles.css', to: '' }], })
Ojalá a alguno le ayude, para que no este mucho tiempo intentando de que le funcione!!!!!
Funciona perfecto con tu ajuste :)
Me sirvió con este, gracias por tu aporte.
new CopyWebpackPlugin({ patterns: [{ from: './src/styles/styles.css', to: '' }], })```
Si alguien tiene un problema al correr npm build, prueben con esto en webpack.config
new CopyWebpackPlugin({ patterns: [{ from: './src/styles/styles.css', to: '' }], })```
Gracias! Me funcionó.
Excelente, me funcionó. Ya me había pasado un rato buscando el error sin éxito. Muchas gracias!
Si tienen problemas al correr npm run build, cambien la configuración de CopyWebpackPlugin por este:
new CopyWebpackPlugin({ patterns: [{ from: './src/styles/styles.css', to: '' }], })
Gracias si me dio el error :)
Gracias, tuve ese mismo error. Como te diste cuenta que era eso y como encontraste la solucion?
Si a alguien le sale el síguete error:
TypeError: compilation.getCache is not a function
La solución es:
Esto por que el curso se encuentra desactualizados para las versiones nuevas.
Muchísimas gracias...!!!
Muchas gracias, me funcionó
Bravaso! Que bacán esto de trabajar con APIs! Sólo les comparto un detalle en la config de copy-webpack-plugin, debería ser escrito así:
Muchas gracias `por tu publicación me ha sido de gran ayuda. :D
Mi reto para aprender bien todo será hacer algo similar pero con la API de pokemon, haber si entendí bien, manejar otra API distinta y agregarle estilos distintos.
¡Excelente Juan! Por favor al final compartenos tu trabajo usando la API de Pokemon 🎉
Así quedo
y en móvil
Hola me podrías pasar el hover ? xfa es que esta muy chvre
Algunos estilos adaptados de YouTube ;)
Podrías compartir tu referencia por favor
Hermoso
Me esta generando este error, no encuentro que puede ser, si a alguien le paso, le agradecería me diera una mano!
dice que hay un error cuando ejecutas .map, tal vez si nos muestras tu codigo podamos ayudarte a ver el error
tenemos justo el mismo problema pero no entiendo muy bien que es lo que esta pasando dado que el único lugar donde usamos map es el home en el home cuyo problema sería que el getData no esta funcionado bien :( pero la verdad no entiendo muy bien que sucede
Algunos ajutes al responsive!
@media (max-width: 780px) { .characters { grid-template-columns: repeat(2, 1fr); } } @media (max-width: 480px) { .characters { grid-template-columns: 1fr; } .characters-inner { grid-template-columns: 1fr; grid-gap: 0; grid-row-gap: 0; } }
Estaba intentando probarlos y no me funcionan :( En que etiqueta respectiva funcionan?
Yo todas mis clases las tengo en minusculas, en el curso, las clases, la primer letra la pusieron con mayuscula, prueba poniendo
@media (max-width: 780px) { .Characters { grid-template-columns: repeat(2, 1fr); } } @media (max-width: 480px) { .Characters { grid-template-columns: 1fr; } .Characters-inner { grid-template-columns: 1fr; grid-gap: 0; grid-row-gap: 0; } }
Esta solución la dio el compañero Cristian Perez Dejoy, el detalle está en instalar la misma versión de copy-webpack-plugin que tiene el profe Óscar. Esta es la solución más rápida y sin realizar tantos cambios. Sin embargo, como ya han mencionado otros compañeros lo mejor es analizar bien el proyecto y hacerlo trabajar con las ultimas versiones. Espero que sea de ayuda.
Solucione el error instalando la versión que se utiliza en el curso.
npm install copy-webpack-plugin@5 --save-dev
En el archivo webpack.conig.js
**Nota: **desinstala copy-webpack-plugin
Gracias, esto soluciono mi problema hoy enero 2021
Tu aporte me ha servido muchisimo, gracias!
Esto me funcionó para el error del build:
newCopyWebpackPlugin({ patterns: [{ from: './src/styles/styles.css', to: '' }], })
A pesar que mi proyecto compila los estilos no se aplican, alguien me podría ayudar porfavor
¿Cómo se pueden cargar más personajes al Home? ¿De que depende la cantidad de personajes que se muestran en Home?
Hola!
Eso dependerá de la APi que esté usando, por ejemplo, la de Rick / Morty sólo tiene 20. Yo hice este curso con una API que yo programé de LOL y son más de 140 personajes. También tú puedes usar paginación, aunque eso también debe estar permitido por la misma API.
Por el momento no está activa 😅 usaba la base de datos de mLab de Heroku de forma gratis y no he migrado nada a Mongo Atlas para que funcione otra vez
ESTOS SON LOS ESTILOS DEL CSS
@import url('https://fonts.googleapis.com/css?family=Open+Sans:300,400&display=swap'); body { margin: 0; padding: 0; background-color: #f4f4f4; color: #3c484e; font-family: 'Open Sans', sans-serif; } .Header-main { display: flex; justify-content: space-between; align-items: center; } .Header a { text-decoration: none; color: #15302C; } .Main { padding: 10px; grid-template-columns: minmax(auto, 976px); display: grid; justify-content: center; } .Characters { grid-template-columns: repeat(3, 1fr); grid-gap: 1.5rem; grid-row-gap: 1.5em; display: grid; } .Characters-inner { grid-template-columns: 1fr 2fr; grid-gap: 1.5rem; grid-row-gap: 1.5em; display: grid; } .Characters-card { text-decoration: none; box-shadow: 8px 14px 38px rgba(39,44,49,.06), 1px 3px 8px rgba(39,44,49,.03); border-radius: 5px; margin: 0 0 20px 0; display: block; animation-duration: 2s; animation-name: fade; } .Characters-card img { width: 100%; height: auto; border-radius: 5px 5px 0 0; } .Characters-card h2 { font-size: 18px; font-weight: 400; text-align: center; } .Characters-card h3 { font-size: 18px; font-weight: 400; text-align: left; margin: 20px; } .Characters-item { text-decoration: none; box-shadow: 8px 14px 38px rgba(39,44,49,.06), 1px 3px 8px rgba(39,44,49,.03); border-radius: 5px; margin: 0 0 20px 0; display: block; animation-duration: 2s; animation-name: fade; } .Characters-item img { width: 100%; height: auto; border-radius: 5px 5px 0 0; } .Characters-item h2 { font-size: 18px; font-weight: 300; padding: 5px 10px; display: flex; justify-content: space-between; } .Characters-item a { text-decoration: none; color: #026C86; } @keyframes fade { from { opacity: 0; } to { opacity: 1; } } .Main-loading { border: 4px solid #f3f3f3; border-top: 4px solid #3498db; border-radius: 50%; width: 20px; height: 20px; animation: spin 2s linear infinite; } @keyframes spin { 0% { transform: rotate(0deg); } 100% { transform: rotate(360deg); } }
Muchas gracias bro!!
Investigando un poco los comentarios de mas abajo, la solucion que me funciono con el error al hacer build fue:
new CopyWebpackPlugin({ patterns: [{ from: "./src/styles/styles.css", to: "" }], }),
Hola, les comparto una forma alternativa CopyWebpackPlugin y poder importar nuestros estilos al javascript en vez de al html, y se vea de esta forma
index.js
import router from './routes/index' import './styles/styles.css' //Esto es lo que queremos lograr window.addEventListener('load', router) window.addEventListener('hashchange', router)
lo primero que ocupamos hacer es, en vez de instalar copy webpack plugin instalar MiniCssExtractPlugin y css loader. Este es el comando para instalarlos:
npm i mini-css-extract-plugin css-loader -D
teniendo eso, en el archivo de webpack.config.js importaremos el plugin asi:
const MiniCssExtractPlugin = require('mini-css-extract-plugin')
despues agregaremos una nueva regla
{ test: /\.css$/i, use: [MiniCssExtractPlugin.loader, 'css-loader'], },
y agregaremos a la parte de plugins esto:
new MiniCssExtractPlugin({ filename: 'assets/[name].css' })
el archivo final de webpack.config.js quedo asi
const path = require('path') const HtmlWebpackPlugin = require('html-webpack-plugin') const MiniCssExtractPlugin = require('mini-css-extract-plugin') /** @type {import('webpack').Configuration} */ module.exports = { entry: './src/index.js', output: { path: path.resolve(__dirname, 'dist'), filename: 'main.js', }, resolve: { extensions: ['.js'], }, module: { rules: [ { test: /\.js?$/, exclude: /node_modules/, use: { loader: 'babel-loader', }, }, { test: /\.css$/i, use: [MiniCssExtractPlugin.loader, 'css-loader'], }, ], }, plugins: [ new HtmlWebpackPlugin({ inject: true, template: './public/index.html', filename: './index.html', }), new MiniCssExtractPlugin({ filename: 'assets/[name].css' }), ], }
y listo, ya podemos importar nuestros estilos desde el javascript Todo esto lo aprende en el curso de webpack
Lo hice de otra forma implementado lo que aprendi en el curso de webpack
Utilizando este plugin para incluir CSS en el proyecto
Instalamos las siguientes dependencias:
npm install mini-css-extract-plugin css-loader -D
Configuramos el arichivo webpack.config.js
Llamamos el plugin con una constante, agregamos una nueva regla para incluir archivos .CSS y creamos una nueva instancia del plugin en la sección de Plugins.
Me funciono asi, muchas gracias
Listo, Ya salio esto :
No le hago mas Estilos, peoque este No es un curso de Estilos y tampoco tengo intencion de subir esto a ningun lado,
Este es un curso de SPA con WebPack, y estoy preparandome para inciar con React la proxima semana.
Tengo el inconveniente que agarra los estilos solo para el home, pero para la página del personaje no los aplica
Hola!
Lo más seguro es que no tengas tus clases nombradas apropiadamente, podrías compartir tu repositorio para ver dónde puede estar el problema?
Hola, Je... si, ya lo había resuelto y era ese el problema :D