GrapesJS is a free and open source Web Builder Framework which helps you building HTML templates to be used inside sites, newsletters and mobile apps. Mainly GrapesJS was designed to be used inside a CMS to speed up a creation of dynamic templates. To better understand this concept check the image below
Generally any 'template system', that you'd find in various applications like CMS, is composed by the structure (HTML), style (CSS) and variables, which are then replaced with other templates and contents on server-side and rendered on client.
This demos show examples of what is possible to achieve: Webpage Demo - http://grapesjs.com/demo.html Newsletter Demo - http://grapesjs.com/demo-newsletter-editor.html
- Blocks
- Style Manager, for component styling
- Layer Manager, that comes handy with nested elements
- Code Viewer
- Asset Manager, for uploading and managing images
-
Local and remote storage
-
Default built-in commands (basically for creating and managing different components)
npm i grapesjs
/yarn add grapesjs
git clone https://github.com/artf/grapesjs.git
For development purpose you should follow instructions below.
GrapesJS uses Webpack as a module bundler and Babel as a compiler.
Clone the repository and install all the necessary dependencies
$ git clone https://github.com/artf/grapesjs.git
$ cd grapesjs
$ npm i
Start the dev server
$ npm start
Build before the commit. This will also increase the patch level version of the package
$ npm run build
JQuery is the only hard dependency so you have to include it before using GrapesJS
<script src="http://code.jquery.com/jquery-2.2.0.min.js"></script>
After that include scripts from GrapesJS with all your configurations
<link rel="stylesheet" href="path/to/grapes.min.css">
<script src="path/to/grapes.min.js"></script>
<div id="gjs"></div>
<script type="text/javascript">
var editor = grapesjs.init({
container : '#gjs',
components: '<div class="txt-red">Hello world!</div>',
style: '.txt-red{color: red}',
});
</script>
You could also grab the content directly from the element with fromElement
property
<div id="gjs">
<div class="txt-red">Hello world!</div>
<style>.txt-red{color: red}</style>
</div>
<script type="text/javascript">
var editor = grapesjs.init({
container : '#gjs',
fromElement: true,
});
</script>
For more practical example I suggest to look up the code inside this demo: http://grapesjs.com/demo.html
Check the getting started guide here: wiki
API References could be found here: API-Reference
$ npm test
- grapesjs-plugin-export - Export GrapesJS templates in a zip archive
- grapesjs-plugin-filestack - Add Filestack uploader in Asset Manager
- grapesjs-plugin-ckeditor - Replaces the built-in RTE with CKEditor
- grapesjs-aviary - Add the Aviary Image Editor
- grapesjs-blocks-basic - Basic set of blocks
- grapesjs-plugin-forms - Set of form components and blocks
- grapesjs-navbar - Simple navbar component
- grapesjs-preset-newsletter - Newsletter Builder
- grapesjs-mjml - Newsletter Builder with MJML components
The project is sponsored by
If you like the project support it with a donation of your choice or become a backer/sponsor via Open Collective
BSD 3-clause