npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

gridsome-plugin-netlify-cms

v1.0.9

Published

Gridsome.js plugin to include Netlify CMS

Downloads

129

Readme

gridsome-plugin-netlify-cms

This Gridsome plugin makes it easy to set up Netlify CMS to manage content on your Gridsome-generated site.

Gridsome is a Vue-powered static site generator for building CDN-ready websites for any headless CMS, local files or APIs

Netlify CMS is built for non-technical and technical editors alike, and it's super-easy to install and configure.

Install

npm install --save netlify-cms gridsome-plugin-netlify-cms

How to use

Add the Netlify CMS plugin in your gridsome.config.js:

  plugins: [
    {
      use: `gridsome-plugin-netlify-cms`
    } 
  ]

Then add your Netlify CMS configuration file in src/admin/config.yml.

Options

gridsome-plugin-netlify-cms supports several options for customizing your Netlify CMS implementation. To provide options, add an options property to the plugin object in gridsome.config.js:

  plugins: [
    {
      use: `gridsome-plugin-netlify-cms`,
      options: {
        publicPath: `/cms` 
      }
    } 
  ]

plugins

(optional, default: [])

You can always install Netlify CMS widgets by creating your own module and setting the modulePath option. But there's an easier way: install the widget via npm then add the npm module name to the plugins array in your project's gridsome.config.js:

npm install netlify-cms-widget-youtube
  plugins: [
    {
      use: `gridsome-plugin-netlify-cms`,
      options: {
        plugins: [`netlify-cms-widget-youtube`]
      }
    } 
  ]

You can then use the widget inside your Netlify CMS config.yml file:

collections:
  - name: "blogs"
    label: "Blogs"
    folder: "blog"
    slug: "{{year}}-{{month}}-{{day}}-{{slug}}"
    fields:
      - { label: "title", name: "title", widget: "string" }
      - { label: "body", name: "body", widget: "markdown" }
      - { label: "video", name: "video", widget: "youtube" }

This currently works with these Netlify CMS widgets:

Note that you cannot use both the plugins and modulePath option together: if you create your own module then you will have to import your Netlify CMS widgets manually.

modulePath

(optional, default: undefined)

If you need to customize Netlify CMS, e.g. registering custom widgets or styling the preview pane, you'll need to do so in a JavaScript module and provide Gridsome with the path to your module via the modulePath option.

  plugins: [
    {
      use: `gridsome-plugin-netlify-cms`,
      options: {
        modulePath: `src/admin/index.js` 
      }
    } 
  ]

The js module might look like this:

/**
 * The default export of `netlify-cms` is an object with all of the Netlify CMS
 * extension registration methods, such as `registerWidget` and
 * `registerPreviewTemplate`.
 */
import CMS from "netlify-cms"

/**
 * Let's say you've created widget and preview components for a custom image
 * gallery widget in separate files:
 */
import ImageGalleryWidget from "./image-gallery-widget.js"
import ImageGalleryPreview from "./image-gallery-preview.js"

/**
 * Register the imported widget:
 */
CMS.registerWidget(`image-gallery`, ImageGalleryWidget, ImageGalleryPreview)

htmlPath

(optional, default: undefined)

If you wish to provide a custom HTML file for your Netlify CMS implementation, you can reference its location here, e.g. src/admin/index.html. If you don't provide this option, gridsome-plugin-netlify-cms will create an HTML file for you.

configPath

(optional, default: "src/admin/config.yml")

If your Netlify CMS config.yml is in a different location to the default src/admin/config.yml, you can specify its location here.

publicPath

(optional, default: "/admin")

Customize the path to Netlify CMS on your Gridsome site.

htmlTitle

(optional, default: "Content Editor")

Customize the value of the title tag in your CMS HTML (shows in the browser bar).

enableIdentityWidget

(optional, type: boolean, default: true)

enableIdentityWidget is true by default, allowing Netlify Identity to be used without configuration, but you may need to disable it in some cases, such as when using a Netlify CMS backend that conflicts. This is currently known to be the case when using the GitLab backend, but only when using implicit OAuth.

Example

Here is the plugin with example values for all options (note that no option is required):

  plugins: [
    {
      use: `gridsome-plugin-netlify-cms`,
      options: {
        modulePath: `src/cms/index.js`,
        configPath: `src/cms/config.yml`,
        htmlPath: `src/cms/index.html`,
        publicPath: `/cms`,
        htmlTitle: `My CMS`,
        enableIdentityWidget: false
      }
    } 
  ]