#jekyll #front-matter #markdown #cli #gatsby

app jekyll-to-gatsby

A tool to batch update Jekyll markdown posts to work with Gatsby, adding their date in the frontmatter block

4 releases (breaking)

0.4.0 Aug 7, 2021
0.3.0 Aug 7, 2021
0.2.0 Aug 6, 2021
0.1.0 Aug 6, 2021

#2 in #jekyll

MIT license

308 lines

Jekyll to Gatsby

CLI tool for batch updating jekyll markdown content files to markdown files useable by Gatsby (changing the date and slug)


Written in Rust, can be run with Cargo

Install the command

cargo install jekyll-to-gatsby

Run the command

cd my-folder-with-posts

The new files should appear in the output folder

What it does

Given a directory of Jekyll markdown post files, with a structure like this:

- some-folder
  - 2012-02-23-a-post.md
  - 2020-06-12-another-post.md
  • Will batch process and output the posts in an output folder (configurable), extracting the date from the file name.
  • Adds the date field in the frontmatter header of each post so Gatsby can find the date.
  • Replaces the {{ site.url }}{{ site.baseurl }} syntax in URLs from Jekyll to remove it. You can move your previous Jekyll assets folder to the static folder in Gatsby and paths should work.

New structure (based on the structure used in the Gatsby Starter Blog:

- some-folder
  - a-post
    - index.md
  - another-post
    - index.md


Use jekyll-to-gatsby --help

Read some lines of a file Get first n lines of a file

    jekyll-to-gatsby [FLAGS] [OPTIONS] [pattern]

    -d, --clean-dir
            Clean output directory before starting

    -h, --help
            Prints help information

    -k, --keep-dates
            Keep dates in file names

    -f, --no-folders
            Don't create individual folders for articles.

    -s, --no-slug
            Don't add a slug to the frontmatter header

    -u, --no-url-replace
            Don't replace the jekyll {{site.baseurl}} syntax in URLs

    -V, --version
            Prints version information

    -v, --verbosity
            Pass many times for more log output

            By default, it'll only report errors. Passing `-v` one time also prints warnings, `-vv` enables info
            logging, `-vvv` debug, and `-vvvv` trace.

    -o, --output <results_dir>
            Custom output directory [default: output]

            Custom glob pattern for finding markdown files. [default: **/*.md]


~124K SLoC