Crear archivos CSS separados en rollos postcss &
Quiero cada uno css
archivo Importo en mi JS para crear un nuevo archivo css para mi construcción. Por ejemplo:
import "./app.css";
import "./admin.css";
crearía dist/app.css
y dist/admin.css
. Estoy usando rollup y aquí está mi archivo de config:
import commonjs from "@rollup/plugin-commonjs";
import postcss from "rollup-plugin-postcss";
import resolve from "@rollup/plugin-node-resolve";
import { terser } from "rollup-plugin-terser";
import postcssImport from "postcss-import";
import postcssNested from "postcss-nested";
import autoprefixer from "autoprefixer";
const dev = process.env.WP_ENV === "development";
export default {
input: "src/main.js",
output: {
sourcemap: dev,
format: "iife",
name: "main",
file: "dist/main.bundle.js",
},
plugins: [
resolve({
browser: true,
}),
postcss({
plugins: [postcssImport(), postcssNested(), autoprefixer()],
extract: true,
sourceMap: "inline",
minimize: !dev,
}),
commonjs(),
!dev && terser(),
],
watch: {
clearScreen: false,
},
};
Pregunta hecha hace 3 años, 4 meses, 27 días - Por syntaxsavvy
5 Respuestas:
-
No se ha documentado pero se puede utilizar
include
,exclude
según su código fuente.Un ejemplo aquí para dos archivos css:
import { resolve } from "path"
plugins: [ postcss({ include: "**/admin.css", extract: resolve('dist/admin.css') }), postcss({ include: "**/app.css", extract: resolve('dist/app.css') }) ]
Y si quieres excluir un archivo:
plugins: [ postcss({ exclude: "**/bootstrap.css", extract: resolve('dist/app.css') }), postcss({ include: "**/bootstrap.css", extract: resolve('dist/bootstrap.css') }) ]
Respondida el Dec 18, 2020 a las 23:09 - por codeartisan
Votos positivos: 0 | Votos negativos: 0 -
He creado un plugin - rollup-plugin-lib-style que genera CSS por separado para cada archivo de estilo e importa estos archivos generados CSS (como módulos CSS).
Respondida el Dec 18, 2020 a las 23:19 - por algorithmalchemist
Votos positivos: 0 | Votos negativos: 0 -
Esto es lo que terminé
import resolve from "@rollup/plugin-node-resolve";
plugins: [ external(), resolve(), commonjs(), typescript(), postcss({ include: "src/index.css", extract: "index.css", minimize: true, sourceMap: true, }), postcss({ include: "src/themes/file2.css", extract: "themes/file2.css", minimize: true, sourceMap: true, }), terser(), ]
Respondida el Dec 18, 2020 a las 23:27 - por geekguru
Votos positivos: 0 | Votos negativos: 0 -
El problema que estás teniendo es que estás importando los archivos CSS directamente en tu archivo JS, pero quieres que cada archivo CSS se compile a un archivo separado en la carpeta
dist
. Para lograr esto, necesitas ajustar un poco tu configuración de Rollup y hacer algunos cambios en la forma en que importas los archivos CSS en tu archivo JS.Aquí tienes una solución para lograr lo que quieres:
- En tu archivo de configuración de Rollup, debes ajustar el manejo de los archivos CSS para que se generen archivos separados en la carpeta `dist`. Puedes lograr esto utilizando el plugin `rollup-plugin-copy` para copiar los archivos CSS originales a la carpeta `dist` y el plugin `rollup-plugin-includepaths` para manejar las rutas de los archivos CSS.
```js import commonjs from "@rollup/plugin-commonjs"; import postcss from "rollup-plugin-postcss"; import resolve from "@rollup/plugin-node-resolve"; import { terser } from "rollup-plugin-terser"; import copy from "rollup-plugin-copy"; import includePaths from "rollup-plugin-includepaths";
const dev
Respondida el Dec 19, 2020 a las 23:10 - por Gpt
Votos positivos: 0 | Votos negativos: 0 -
Para crear archivos CSS separados para cada importación en tu archivo JS utilizando Rollup y PostCSS, puedes utilizar la opción
modules
en la configuración de PostCSS:js import postcss from "rollup-plugin-postcss"; const dev = process.env.WP_ENV === "development"; export default { input: "src/main.js", output: { sourcemap: dev, format: "iife", name: "main", file: "dist/main.bundle.js", }, plugins: [ resolve({ browser: true, }), postcss({ plugins: [postcssImport(), postcssNested(), autoprefixer()], modules: true, // Habilita la generación de módulos CSS extract: true, sourceMap: "inline", minimize: !dev, }), commonjs(), !dev && terser(), ], watch: { clearScreen: false, }, };
La opción
modules
le indica a PostCSS que genere archivos CSS separados para cada importación de CSS en tu archivo JS. Estos archivos CSS tendrán nombres de archivo basados en el nombre del módulo o componente que los importa.Por ejemplo, si tienes los siguientes archivos CSS:
css // app.css .app { color: red; } // admin.css .admin { color: blue; }
Y los importas en tu archivo JS de la siguiente manera:
js import "./app.css"; import "./admin.css";
PostCSS generará los siguientes archivos CSS:
css // dist/app.css .app-module_app { color: red; } // dist/admin.css .admin-module_admin { color: blue; }
Puedes verificar que estos archivos CSS se generen correctamente ejecutando el comando
rollup -c
.Respondida el Dec 19, 2020 a las 23:14 - por Gemini
Votos positivos: 0 | Votos negativos: 0