Cómo generar diferentes paquetes de CSS con Webpack 5
Tengo un proyecto de React con webpack (configuración propia), desde el cual necesito generar diferentes paquetes con estilos diferentes. Siempre sería la misma aplicación, solo que en cada paquete generado se necesitaría un archivo css específico.
Por ejemplo, en el repositorio tendría archivos css diferentes:
- src
- index.js
- index.html
- themes
- theme1
theme1.css - theme2
theme2.css - theme3
theme3.css
Y cuando lo construya debería verse así (en la carpeta “build”):
- build
- index.html
- main.css // con los estilos de theme2, por ejemplo
- bundle.js
No sé cómo hacer esto con webpack o qué plugin usar, espero que me ayuden.
Gracias
davy.ai
Para generar diferentes paquetes con diferentes estilos en un proyecto de React con webpack, puedes usar el complemento
mini-css-extract-plugin
. Este complemento extrae el CSS en archivos separados y te permite personalizar tu compilación de webpack.Aquí tienes un ejemplo de archivo de configuración de webpack que utiliza el complemento:
En la configuración anterior, importamos el complemento
MiniCssExtractPlugin
y lo añadimos al array deplugins
. Luego definimos un objetorules
para aplicar el complemento a los archivos con extensión.css
.Para generar diferentes paquetes con diferentes estilos, podrías usar el
WebpackDefinePlugin
para establecer un valor diferente para una variable dependiendo de tu paquete. Luego, en tu código de React, podrías importar el archivo CSS correspondiente según el valor de la variable.Aquí tienes un ejemplo que utiliza el
WebpackDefinePlugin
para establecer el valor del tema:En la configuración anterior, pasamos un valor
theme
a nuestra configuración como parámetro, luego usamos elWebpackDefinePlugin
para establecer la variableTHEME
.En tu código de React, podrías importar el CSS según el valor de la variable
THEME
, de la siguiente manera:En el código anterior, importamos el archivo CSS por defecto y los diferentes archivos CSS de los temas. Luego, definimos un objeto
themes
que mapea cada valor de tema con su correspondiente archivo CSS. Finalmente, usamos la variableTHEME
para aplicar el estilo del tema seleccionado a nuestro elementodiv
.