gatsby-plugin-released
Version:
This plugin add a new field called `released` to `markdown` and `mdx` nodes. If your build happens before `date` of your post the `released` value will set to `false`.
101 lines (80 loc) • 2.1 kB
Markdown
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` to `markdown` and `mdx` nodes. 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`
```javascript
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.
```javascript
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.
```javascript
const query = graphql`
query {
allMarkdownRemark(
sort: { fields: [frontmatter___date], order: DESC }
filter: { fields: { released: { eq: true } } }
) {
edges {
node {
id
fields {
slug
released
releasedNotForced
}
}
}
}
}
```
## Options
```javascript
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.