Skip to content
Gatsby Post Manager helps you quickly see which of your posts are published, pending, and unpublished.
JavaScript
Branch: master
Clone or download
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
bin
images
.gitignore initial commit Sep 13, 2019
.travis.yml
LICENSE
README.md
package-lock.json
package.json

README.md

Gatsby Post Manager

npm badge travis badge

Gatsby Post Manager (gpm) is a command line tool that:

  • helps keep track of Gatsby posts, and easily see which ones are published, pending, or unpublished
  • create new posts from a template

Installation

$ npm install -g gatsby-post-manager

Usage

gpm is opinionated - it assumes your posts:

  • use the .md or .mdx file extensions
  • have a required published boolean flag in their frontmatter
  • have an optional date attribute (format: YYYY-MM-DD) in their frontmatter

gpm will recursively search the provided content path (the --dir option) for posts.

Below is my example directory structure. All gpm commands are invoked from the site root.

site/
├── content/
│   ├── posts/
│   |   ├── my-first-post/
│   |   |   └── index.md
│   |   ├── my-second-post/
│   |   |   └── index.mdx
│   |   └── my-third-post.md

List all posts, including their status:

$ gpm -d content posts
# or
$ gpm -d content p

gpm-all-posts

List posts whose status is one of: published, pending, or unpublished

# status flags: --published, --pending, --unpublished
$ gpm -d content posts --pending
# or
$ gpm -d content p --pending

gpm-pending-posts

How does gpm determine post status?

  • A post's status is published if its published attribute is true, and its date attribute occurs before or is equal to today's date (if the post has a date attribute)
  • A post's status is pending if its published attribute is true, and its date attribute occurs after today's date (if the post has a date attribute)
  • A post's status is published if its published attribute is true, and it does not have a date attribute
  • A post's status is unpublished if its published attribute is not true, or doesn't have a published attribute at all

Display post stats:

$ gpm -d content post-stats
# or
$ gpm -d content ps

gpm-all-posts

Create a post:

$ gpm posts new path/to/posts "hello world"

will create a new path/to/posts/hello-world.md file whose frontmatter looks like:

---
title: Hello World
slug: "hello-world"
tags: []
published: false
date: "2019-09-23"
---
Add your content here
You can’t perform that action at this time.