4.0.0 ā€¢ Published 4 months ago

@builder.io/gatsby v4.0.0

Weekly downloads
319
License
MIT
Repository
github
Last release
4 months ago

@builder.io/gatsby

Plugin for integrating Builder.io to allow drag and drop page building with Gatsby. It puts the Builder.io schema under an allBuilderModels field of the Gatsby GraphQL query, If a templates map is passed as option, this plugin will create gatsby pages dynamically for each page entry in builder.io on the path specified.

Install

npm install @builder.io/gatsby

How to use

Make a free account over at Builder.io and grab your public API key from your organization page and:

// In your gatsby-config.js
const path = require('path');
module.exports = {
  plugins: [
    {
      resolve: '@builder.io/gatsby',
      options: {
        // public API Key
        publicAPIKey: 'MY_PUBLIC_API_KEY',
        // OPTIONAL
        // Set this to `true` to rely on our cached content. Default value is `false`, always fetching the newest content from Builder.
        useCache: false,
        // OPTIONAL
        // mapping model names to template files, the plugin will create a page for each entry of the model at its specified url
        templates: {
          // `page` can be any model of choice, camelCased
          page: path.resolve('templates/my-page.tsx'),
        },
        // OPTIONAL
        mapEntryToContext: async ({ entry, graphql }) => {
          const result = await graphql('....');
          return {
            property: entry.data.property,
            anotherProperty: entry.data.whatever,
            dataFromQuery: result.data
            /* ... */
          };
        },
        // OPTIONAL
        // to resolve a single entry to multiple, for e.g in localization
        resolveDynamicEntries: async (entries) => {
          const entriesToBuild = []
          for entry of entries {
            if (entry.data.myprop.isDynamic){
               entriesToBuild.push(await myEntryResolver(entry))
            }
            else {
               entriesToBuild.push(entry)
            }
          }
          return entriesToBuild;
        },
      },
    },
  ],
};

Then start building pages in Builder.io, hit publish, and they will be incluced in your Gatsby site on each new build!

For a more advanced example and a starter check out gatsby-starter-builder

Using your components in the editor

See this design systems example for lots of examples using your deisgn system + custom components

šŸ‘‰Tip: want to limit page building to only your components? Try components only mode

Register a component

import { Builder } from '@builder.io/react';

class SimpleText extends React.Component {
  render() {
    return <h1>{this.props.text}</h1>;
  }
}

Builder.registerComponent(SimpleText, {
  name: 'Simple Text',
  inputs: [{ name: 'text', type: 'string' }],
});

How to Query

For an up-to-date complete examples check out the Gatsby + Builder.io starter

{
  allBuilderModels {
    myPageModel(options: { cachebust: true }) {
      content
    }
  }
}

Learn more

4.0.0

4 months ago

3.0.3

1 year ago

3.0.2

2 years ago

3.0.2-1

2 years ago

3.0.2-0

2 years ago

3.0.1

2 years ago

3.0.0

2 years ago

3.0.1-0

2 years ago

2.0.6-0

2 years ago

2.0.5

2 years ago

2.0.6-9

2 years ago

2.0.6-8

2 years ago

2.0.6-7

2 years ago

2.0.6-6

2 years ago

2.0.6-5

2 years ago

2.0.6-4

2 years ago

2.0.6-3

2 years ago

2.0.6-2

2 years ago

2.0.6-1

2 years ago

2.0.6-14

2 years ago

2.0.6-15

2 years ago

2.0.6-16

2 years ago

2.0.6-10

2 years ago

2.0.6-11

2 years ago

2.0.6-12

2 years ago

2.0.6-13

2 years ago

2.0.5-7

2 years ago

2.0.5-6

2 years ago

2.0.5-5

2 years ago

2.0.5-4

2 years ago

2.0.5-3

2 years ago

2.0.5-1

2 years ago

2.0.5-0

2 years ago

2.0.5-2

2 years ago

2.0.4-0

3 years ago

2.0.4

3 years ago

2.0.3

3 years ago

2.0.2

3 years ago

2.0.1

3 years ago

1.0.12

3 years ago

1.0.12-0

4 years ago

1.0.11

4 years ago

1.0.11-alpha.0

4 years ago

1.0.11-alpha.1

4 years ago

1.0.10-alpha.0

4 years ago

1.0.10

4 years ago

1.0.9-alpha.0

4 years ago

1.0.9

4 years ago

1.0.8

4 years ago

1.0.8-alpha.0

4 years ago

1.0.7

4 years ago

1.0.6

4 years ago

1.0.7-alpha.0

4 years ago

1.0.6-alpha.1

4 years ago

1.0.5

4 years ago

1.0.5-alpha.2

4 years ago

1.0.5-alpha.1

4 years ago

1.0.5-alpha.0

4 years ago

1.0.4

4 years ago

1.0.4-alpha.0

4 years ago

1.0.2

4 years ago

1.0.3

4 years ago

1.0.2-alpha.0

4 years ago

1.0.1

4 years ago

1.0.1-alpha.0

4 years ago