Warum eine Webpack-Konfiguration für GrapesJS
GrapesJS liefert ein JavaScript-Bundle plus ein Stylesheet aus. Das Einzige, was Webpack noch braucht zu wissen ist, wie man diesen CSS-Import handhabt; das JavaScript funktioniert ohne spezielle Loader. Dieser Leitfaden richtet die Loader ein, einen Eintrag, der den Editor initialisiert, und Produktions-CSS-Extraktion.
1. Installation
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. Initialisieren Sie den 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,
});
Der CSS-Import wird durch die oben genannte .css Regel gehandhabt.
4. CSS in der Produktion extrahieren
const MiniCssExtractPlugin = require('mini-css-extract-plugin');
module.exports = {
// ...entry/output
module: {
rules: [
{ test: /\.css$/, use: [MiniCssExtractPlugin.loader, 'css-loader'] },
],
},
plugins: [new MiniCssExtractPlugin()],
};
Dies gibt eine cachefähige .css Datei aus, anstatt Styles bei zu injizieren
Laufzeit – besser für die erste Lackierung.
Produktionstipps
Stimmt den Produktions-Build auf Caching und Gewicht an. Stattdessen verwendet MiniCssExtractPlugin der style-loader Editor CSS als cachebare Datei und fügt Inhalts-Hash-Dateinamen hinzu ([contenthash]), damit Browser aggressiv cachen, aber neue Builds aufnehmen. GrapesJS ist groß – wenn nur ein Teil deiner App es nutzt, lade es über eine Dynamik import('grapesjs') , sodass Webpack es in einen eigenen Abschnitt aufteilt und der Rest der App leicht bleibt. Schalte Quellcode-Maps in der Produktion aus (oder zu source-map externen) und lass mode: 'production' Minifikation und Baumschütteln übernehmen.
Voraussetzungen
Du brauchst Node.js 18+ und Webpack 5. Das Einzige, was Webpack wissen muss, ist, wie man sich um den Import des GrapesJS-Stylesheets kümmern; JavaScript funktioniert ohne speziellen Loader. Vertrautheit mit Eingabe/Ausgabe, Regeln und Plugins reicht aus.
Fügen Sie benutzerdefinierte Blöcke zum Editor hinzu
Registrieren Sie ziehbare Blöcke mit dem Blockmanager nach grapesjs.init:
editor.BlockManager.add('hero', {
label: 'Hero section',
category: 'Sections',
content: '<section class="hero"><h1>Headline</h1><p>Copy</p></section>',
});
Ziehe fertige Blockbibliotheken und Presets aus GJS.Market für ein reichhaltigeres Set.
Code-geteiltes GrapesJS in einen eigenen Chunk
GrapesJS ist beträchtlich. Wenn nur ein Teil deiner App es nutzt, lade es über eine dynamische App importieren, damit Webpack es aufteilt und der Rest der App leicht bleibt:
async function openEditor(container) {
const { default: grapesjs } = await import('grapesjs');
await import('grapesjs/dist/css/grapes.min.css');
return grapesjs.init({ container, height: '100vh' });
}
Aufführungstipps
In der Produktion verwenden MiniCssExtractPlugin , um eine cachebare CSS-Datei auszusenden.
anstatt Stile zur Laufzeit einzufügen, und Dateinamen hinzuzufügen [contenthash]
Browser cachen also aggressiv, nehmen aber neue Builds auf. Quellkarten ausschalten (oder auf ein
externe Karte) in der Produktion zu betreiben und zu mode: 'production' verarbeiten
Verkleinung und Baumschütteln.
Fehlerbehebung häufiger Fehler
"Du brauchst möglicherweise einen passenden Loader" bedeutet im CSS-Import.
css-loader/style-loader (oder MiniCssExtractPlugin) ist es nicht
konfiguriert für .css. Eine unstilierte Leinwand bedeutet die
Der Stylesheet-Import wurde nicht gelöst. Ein riesiges Bündel bedeutet, dass GrapesJS es nicht ist
Code-Split – lade es mit einem dynamischen Import.
Webpack vs. Vite für GrapesJS
Beide bündeln GrapesJS sauber. Webpack ist das richtige Zuhause, wenn dein Projekt bereits vorhanden ist standardisiert darauf und du willst explizite Kontrolle über Lader und Chunks; Vite ist Weniger Konfiguration und schneller in der Entwicklung. Das GrapesJS-spezifische Setup ist ebenso klein auf beides nicht.
Nächste Schritte
Bevorzugst du einen Zero-Config-Bundler? Siehe die GrapesJS + Vite Aufbau. Siehe auch GrapesJS + React, durchstöbere die GrapesJS-Marktplatz oder starte mit dem GJS.Market-Startseite.
FAQ
Welche Loader benötigt GrapesJS?
style-loader und css-loader (oder
MiniCssExtractPlugin in der Produktion), sodass der Editor CSS importiert
entscheidet. Der JS benötigt keinen speziellen Lader.
Wie importiere ich das Stylesheet?
Importiere 'grapesjs/dist/css/grapes.min.css' deinen Eintrag; die CSS-Regel
leitet es durch die Loader.
Sollte ich CSS in der Produktion extrahieren?
Ja – nutze MiniCssExtractPlugin es, um ein Cacheable zu emittieren.
.css Files statt Styles einzufügen.
