4.0.0 • Published 1 year ago

@builder.io/gatsby v4.0.0

Weekly downloads
319
License
MIT
Repository
github
Last release
1 year 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

1 year ago

3.0.3

3 years ago

3.0.2

3 years ago

3.0.2-1

3 years ago

3.0.2-0

3 years ago

3.0.1

3 years ago

3.0.0

3 years ago

3.0.1-0

3 years ago

2.0.6-0

3 years ago

2.0.5

3 years ago

2.0.6-9

3 years ago

2.0.6-8

3 years ago

2.0.6-7

3 years ago

2.0.6-6

3 years ago

2.0.6-5

3 years ago

2.0.6-4

3 years ago

2.0.6-3

3 years ago

2.0.6-2

3 years ago

2.0.6-1

3 years ago

2.0.6-14

3 years ago

2.0.6-15

3 years ago

2.0.6-16

3 years ago

2.0.6-10

3 years ago

2.0.6-11

3 years ago

2.0.6-12

3 years ago

2.0.6-13

3 years ago

2.0.5-7

3 years ago

2.0.5-6

3 years ago

2.0.5-5

3 years ago

2.0.5-4

3 years ago

2.0.5-3

3 years ago

2.0.5-1

4 years ago

2.0.5-0

4 years ago

2.0.5-2

4 years ago

2.0.4-0

4 years ago

2.0.4

4 years ago

2.0.3

4 years ago

2.0.2

4 years ago

2.0.1

4 years ago

1.0.12

5 years ago

1.0.12-0

5 years ago

1.0.11

5 years ago

1.0.11-alpha.0

5 years ago

1.0.11-alpha.1

5 years ago

1.0.10-alpha.0

5 years ago

1.0.10

5 years ago

1.0.9-alpha.0

5 years ago

1.0.9

5 years ago

1.0.8

5 years ago

1.0.8-alpha.0

5 years ago

1.0.7

5 years ago

1.0.6

5 years ago

1.0.7-alpha.0

5 years ago

1.0.6-alpha.1

5 years ago

1.0.5

5 years ago

1.0.5-alpha.2

5 years ago

1.0.5-alpha.1

5 years ago

1.0.5-alpha.0

5 years ago

1.0.4

5 years ago

1.0.4-alpha.0

5 years ago

1.0.2

5 years ago

1.0.3

5 years ago

1.0.2-alpha.0

5 years ago

1.0.1

5 years ago

1.0.1-alpha.0

5 years ago