grapesjs-netlify

1.0.8 • Public • Published

Grapesjs Netlify

This plugin implements a custom but similar grapesjs-plugin-export so there is no need to install it.

Netlify dashboard for deploying sites directly in grapesjs

Screenshot

DEMO

HTML

<link href="https://unpkg.com/grapesjs/dist/css/grapes.min.css" rel="stylesheet">
<link href="https://unpkg.com/grapesjs-netlify/dist/grapesjs-netlify.min.css" rel="stylesheet">
<script src="https://unpkg.com/grapesjs"></script>
<script src="https://unpkg.com/grapesjs-netlify"></script>

<div id="gjs"></div>

JS

const editor = grapesjs.init({
  container: '#gjs',
  height: '100%',
  fromElement: true,
  storageManager: false,
  plugins: ['grapesjs-netlify'],
});

CSS

body, html {
  margin: 0;
  height: 100%;
}

Summary

  • Plugin name: grapesjs-netlify
  • Commands
    • netlify-dashboard
    • gjs-export-zip
  • API
    • editor.NetlifyDashboard

Options

Option Description Default
token Personal netlify access token
mdlTitle Modal title Netlify Dashboard
authUrl Use this to authenticate instead of providing token /.netlify/functions/auth-start
loader Loader element
nodeploys No deploys element
onInvalidToken Invalid token durin auth check source
onDeploy On successful site deploy check source
onDeployErr On error site deploy check source
addExportBtn Add button inside the export dialog true
btnLabel Label for the export button Export to ZIP
filenamePfx ZIP filename prefix grapesjs_template
filename Use a function to generate the filename eg.filename: ed => 'file.zip' null
root Use the root object to create the folder structure of the your zip(async functions are supported) {...check source}

Using async in root:

{
  css: {
    'style.css': ed => ed.getCss(),
    'file.txt': 'My custom content',
  },
  img: async ed => {
    const images = await fetchImagesByStructure(ed.getComponents());
    return images;
    // Where `images`:
    // { 'img1.png': '...png content', ... }
  }
  'index.html': ed => `<body>${ed.getHtml()}</body>`
}

Download

  • CDN
    • https://unpkg.com/grapesjs-netlify
  • NPM
    • npm i grapesjs-netlify
  • GIT
    • git clone https://github.com/Ju99ernaut/grapesjs-netlify.git

Usage

Directly in the browser

<link href="https://unpkg.com/grapesjs/dist/css/grapes.min.css" rel="stylesheet"/>
<link href="https://unpkg.com/grapesjs-netlify/dist/grapesjs-netlify.min.css" rel="stylesheet">
<script src="https://unpkg.com/grapesjs"></script>
<script src="path/to/grapesjs-netlify.min.js"></script>

<div id="gjs"></div>

<script type="text/javascript">
  var editor = grapesjs.init({
      container: '#gjs',
      // ...
      plugins: ['grapesjs-netlify'],
      pluginsOpts: {
        'grapesjs-netlify': { /* options */ }
      }
  });
</script>

Modern javascript

import grapesjs from 'grapesjs';
import plugin from 'grapesjs-netlify';
import 'grapesjs/dist/css/grapes.min.css';
import 'grapesjs-netlify/dist/grapesjs-netlify.min.css'

const editor = grapesjs.init({
  container : '#gjs',
  // ...
  plugins: [plugin],
  pluginsOpts: {
    [plugin]: { /* options */ }
  }
  // or
  plugins: [
    editor => plugin(editor, { /* options */ }),
  ],
});

Development

Clone the repository

$ git clone https://github.com/Ju99ernaut/grapesjs-netlify.git
$ cd grapesjs-netlify

Install dependencies

$ npm i

Build sass

$ npm run build:css

Start the dev server

$ npm start

Build the source

$ npm run build

To Do

If you're interested in contributing to the project these could be good starting points

  • [x] Multi-page deploys(Already possible)
  • [ ] Serverless functions(See functions branch)
  • [x] Forms(grapesjs-plugin-forms can be made compatible)
  • [ ] More settings(Domain management)

Forms

//make forms netlify compatible
const domc = editor.Components;
const typeForm = domc.getType('form').model;
domc.addType('form', {
    model: {
        initTraits() {
            typeForm.prototype.initTraits.apply(this, arguments);
            const tr = this.get('traits');
            tr.push({
                type: 'checkbox',
                name: 'data-netlify',
                label: 'Netlify'
            });
            this.set('traits', tr);
        }
    }
});

License

MIT

Readme

Keywords

Package Sidebar

Install

npm i grapesjs-netlify

Weekly Downloads

67

Version

1.0.8

License

MIT

Unpacked Size

802 kB

Total Files

19

Last publish

Collaborators

  • ju99ernaut