1.0.8 • Published 10 months ago

grapesjs-netlify v1.0.8

Weekly downloads
-
License
MIT
Repository
github
Last release
10 months ago

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

OptionDescriptionDefault
tokenPersonal netlify access token
mdlTitleModal titleNetlify Dashboard
authUrlUse this to authenticate instead of providing token/.netlify/functions/auth-start
loaderLoader element
nodeploysNo deploys element
onInvalidTokenInvalid token durin authcheck source
onDeployOn successful site deploycheck source
onDeployErrOn error site deploycheck source
addExportBtnAdd button inside the export dialogtrue
btnLabelLabel for the export buttonExport to ZIP
filenamePfxZIP filename prefixgrapesjs_template
filenameUse a function to generate the filename eg.filename: ed => 'file.zip'null
rootUse 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

  • Multi-page deploys(Already possible)
  • Serverless functions(See functions branch)
  • 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

1.0.8

10 months ago

1.0.7

2 years ago

1.0.6

2 years ago

1.0.5

2 years ago

1.0.4

2 years ago

1.0.3

3 years ago

1.0.2

3 years ago

1.0.1

3 years ago