Skip to content
A gatsby plugin to add a draft / release state for your content.
Branch: master
Clone or download
Latest commit b77b065 May 26, 2019
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
README.md 📖 update README May 26, 2019
gatsby-node.js 🐞 respect falsy values in markdown May 8, 2019
index.js 🛠 empty index.js May 26, 2019
package-lock.json 0.2.2 May 16, 2019
package.json v0.2.3 May 26, 2019
yarn.lock 🛠 empty index.js May 26, 2019

README.md

A plugin that lets you mark posts and drafts and automatically exclude them from production.

How it works

This plugin add a new field called released. If your build happens before date of your post the released value will set to false.

How to use

Add plugin to gatsby-node.js

module.exports = {
  plugins: [
    /*
        ...
    */
    'gatsby-plugin-released'
  ]
};

Update your GraphQL queries

You may want to exclude drafts from a build step in file gatsby-node.js and respect the released value from blog pages such as index.js.

In both cases the query will look something like this. Pay attention to a filter property.

const query = graphql(
  `
    {
      allMarkdownRemark(
        sort: { fields: [frontmatter___date], order: DESC }
        filter: { fields: { released: { eq: true } } }
      ) {
        edges {
          node {
            id
          }
        }
      }
    }
  `
);

Update your component code

This step is totally up to yours component tree. The key point is to request necessary fields via GraphQL query.

const query = graphql`
  query {
    allMarkdownRemark(
      sort: { fields: [frontmatter___date], order: DESC }
      filter: { fields: { released: { eq: true } } }
    ) {
      edges {
        node {
          id
          fields {
            slug
            released
            releasedNotForced
          }
        }
      }
    }
  }

Options

module.exports = {
  plugins: [
    {
      resolve: 'gatsby-plugin-released',
      options: {
        fieldName: 'released',
        fieldNameNotForced: 'releasedNotForced',
        timezone: 'UTC',
        force: process.env.NODE_ENV === development
      }
    }
  ]
};

fieldName and fieldNameNotForced

Use to overried the default field name.

force

In case you want to display posts in development mode you can use force option.

timezone

Set another timezone that will be respected at build time to calculate released value.

You can’t perform that action at this time.