Por qué una configuración de Webpack para GrapesJS
GrapesJS incluye un paquete de JavaScript más una hoja de estilo. Lo único que necesita Webpack saber es cómo gestionar esa importación CSS; el JavaScript funciona sin ningún elemento especial Loader. Esta guía configura los cargadores, una entrada que inicializa el editor, y extracción CSS de producción.
1. Instalación
npm install grapesjs
npm install -D webpack webpack-cli css-loader style-loader
2. webpack.config.js
const path = require('path');
module.exports = {
entry: './src/index.js',
output: { path: path.resolve(__dirname, 'dist'), filename: 'bundle.js' },
module: {
rules: [
{ test: /\.css$/, use: ['style-loader', 'css-loader'] },
],
},
};
3. Inicializar el editor
// src/index.js
import grapesjs from 'grapesjs';
import 'grapesjs/dist/css/grapes.min.css';
grapesjs.init({
container: '#gjs',
height: '100vh',
fromElement: true,
storageManager: false,
});
La importación CSS se gestiona con la .css regla anterior.
4. Extraer CSS en producción
const MiniCssExtractPlugin = require('mini-css-extract-plugin');
module.exports = {
// ...entry/output
module: {
rules: [
{ test: /\.css$/, use: [MiniCssExtractPlugin.loader, 'css-loader'] },
],
},
plugins: [new MiniCssExtractPlugin()],
};
Esto emite un archivo cacheable .css en lugar de inyectar estilos en
Duración — mejor para la primera pintura.
Consejos de producción
Ajusta la versión de producción para que la caché y el peso. En lugar de style-loader usar MiniCssExtractPlugin para que el editor se envíe CSS como archivo cacheable, y añade nombres de archivo content-hash ([contenthash]) para que los navegadores almacenen caché agresivamente pero detecten nuevas versiones. GrapesJS es bastante grande: si solo una parte de tu app lo usa, cárgalo a través de un dinámico import('grapesjs') para que Webpack lo divida en su propio fragmento y el resto de la app siga siendo ligero. Desactiva los mapas fuente (o los externossource-map) en producción, y deja mode: 'production' que se encargue de la minificación y el tree-shaking.
Requisitos previos
Necesitarás Node.js 18+ y Webpack 5. Lo único que Webpack debe saber es cómo gestionar la importación de la hoja de estilo GrapesJS; el JavaScript funciona sin un cargador especial. Con familiaridad con entrada/salida, reglas y plugins es suficiente.
Añadir bloques personalizados al editor
Registrar bloques arrastrables con el Gestor de bloques después grapesjs.initde:
editor.BlockManager.add('hero', {
label: 'Hero section',
category: 'Sections',
content: '<section class="hero"><h1>Headline</h1><p>Copy</p></section>',
});
Saca librerías de bloques y presets listos de GJS. Haz marketing para un conjunto más rico.
GrapesJS dividió el código en su propio bloque
GrapesJS es bastante grande. Si solo una parte de tu app lo usa, cárgalo a través de una dinámica importar, así que Webpack lo divide y el resto de la app sigue siendo ligero:
async function openEditor(container) {
const { default: grapesjs } = await import('grapesjs');
await import('grapesjs/dist/css/grapes.min.css');
return grapesjs.init({ container, height: '100vh' });
}
Consejos de rendimiento
Uso MiniCssExtractPlugin en producción para emitir un archivo CSS en caché
en lugar de inyectar estilos en tiempo de ejecución y añadir [contenthash] nombres de archivo
Así que los navegadores almacenan caché de forma agresiva pero detectan nuevas versiones. Desactiva los mapas de origen (o a un
mapa externo) en producción, y el handle de let mode: 'production'
minificación y sacudir árboles.
Resolución de errores comunes
"Puede que necesites un cargador adecuado" en la importación CSS significa
css-loader/style-loader (o MiniCssExtractPlugin) no lo es
configurado para .css. Un lienzo sin estilo significa el
La importación de hojas de estilo no se resolvió. Un lote enorme significa que GrapesJS no lo es
División de código — cárgalo con una importación dinámica.
Webpack vs Vite para GrapesJS
Ambos agrupan GrapesJS limpiamente. Webpack es el hogar adecuado cuando ya tienes tu proyecto se estandariza y quieres control explícito sobre cargadores y bloques; Vite es Configuración más baja y más rápido en desarrollo. La configuración específica de GrapesJS es igualmente pequeña en tampoco.
Próximos pasos
¿Prefieres un bundler sin configuración? Ver GrapesJS + Vite Preparación. Véase también GrapesJS + React, navega por la Mercado GrapesJS, o empieza desde el GJS. Página principal del mercado.
Preguntas frecuentes
¿Qué cargadores necesita GrapesJS?
style-loader y css-loader (o
MiniCssExtractPlugin en producción) por lo que el editor importación CSS
se resuelve. El JS no necesita cargador especial.
¿Cómo importo la hoja de estilo?
Importa 'grapesjs/dist/css/grapes.min.css' en tu entrada; la regla CSS
La pasa por los cargadores.
¿Debería extraer CSS en producción?
Sí — úsalo MiniCssExtractPlugin para emitir un cacheable
.css Archiva en vez de inyectar estilos.
