Note: This starter uses Gatsby v2.
This repo contains an example business website that is built with Gatsby, and Netlify CMS: Demo Link.
It follows the JAMstack architecture by using Git as a single source of truth, and Netlify for continuous deployment, and CDN distribution.
purge-css-plugin
gatsby-image
with Netlify-CMS preview supportlambda
folderNetlify CMS can run in any frontend web environment, but the quickest way to try it out is by running it on a pre-configured starter site with Netlify. The example here is the Kaldi coffee company template (adapted from One Click Hugo CMS). Use the button below to build and deploy your own copy of the repository:
After clicking that button, you’ll authenticate with GitHub and choose a repository name. Netlify will then automatically create a repository in your GitHub account with a copy of the files from the template. Next, it will build and deploy the new site on Netlify, bringing you to the site dashboard when the build is complete. Next, you’ll need to set up Netlify’s Identity service to authorize users to log in to the CMS.
Pulldown a local copy of the Github repository Netlify created for you, with the name you specified in the previous step
$ git clone https://github.com/[GITHUB_USERNAME]/[REPO_NAME].git
$ cd [REPO_NAME]
$ yarn
$ netlify dev # or ntl dev
This uses the new Netlify Dev CLI feature to serve any functions you have in the lambda
folder.
To test the CMS locally, you'll need to run a production build of the site:
SAS: Using npm install instead of yarn below
$ npm install
$ npm run build
$ netlify dev # or ntl dev
Run locally with gatsby develop
after CLI installed.
"Cannot find gatsby.js"
Try npm install --save gatsby-cli
. See this SO answer.
Media Libraries have been included in this starter as a default. If you are not planning to use Uploadcare
or Cloudinary
in your project, you can remove them from module import and registration in src/cms/cms.js
. Here is an example of the lines to comment or remove them your project.
import CMS from 'netlify-cms-app'
// import uploadcare from 'netlify-cms-media-library-uploadcare'
// import cloudinary from 'netlify-cms-media-library-cloudinary'
import AboutPagePreview from './preview-templates/AboutPagePreview'
import BlogPostPreview from './preview-templates/BlogPostPreview'
import ProductPagePreview from './preview-templates/ProductPagePreview'
import IndexPagePreview from './preview-templates/IndexPagePreview'
// CMS.registerMediaLibrary(uploadcare);
// CMS.registerMediaLibrary(cloudinary);
CMS.registerPreviewTemplate('index', IndexPagePreview)
CMS.registerPreviewTemplate('about', AboutPagePreview)
CMS.registerPreviewTemplate('products', ProductPagePreview)
CMS.registerPreviewTemplate('blog', BlogPostPreview)
Note: Don't forget to also remove them from package.json
and yarn.lock
/ package-lock.json
using yarn
or npm
. During the build netlify-cms-app will bundle the media libraries as well, having them removed will save you build time.
Example:
yarn remove netlify-cms-media-library-uploadcare
OR
yarn remove netlify-cms-media-library-cloudinary
$ gatsby new [SITE_DIRECTORY_NAME] https://github.com/netlify-templates/gatsby-starter-netlify-cms/
$ cd [SITE_DIRECTORY_NAME]
$ npm run build
$ npm run serve
This plugin uses gatsby-plugin-purgecss and bulma. The bulma builds are usually ~170K but reduced 90% by purgecss.
This query can be used to help with fidning empty description fields on the site. This is important for both the OpenGraph preview as well as SEO.
{
site {
siteMetadata {
siteUrl
}
}
allMarkdownRemark(filter: {frontmatter: {description: {eq:null}}}) {
nodes {
frontmatter {
title
description
}
}
}
}