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

gatsby-transformer-yaml-plus

v5.0.0

Published

Gatsby transformer plugin for yaml, with extra Markdown support

Downloads

33

Readme

gatsby-transformer-yaml-plus

A Gatsby transformer plugin to parse YAML files, with some extra goodies.

This plugin is based off of gatsby-transformer-yaml, and like gatsby-transformer-yaml, this plugin can:

  • convert a yaml file object into a node
  • convert an array of objects in a yaml file, each into their own node
  • supports both .yaml and .yml extensions (anything with a mediaType of text/yaml)

Currently, the main benefits of gatsby-transformer-yaml-plus over gatsby-transformer-yaml are:

  • Optional Markdown rendering

Installation

npm i gatsby-transformer-yaml-plus

You also need to install gatsby-source-filesystem, if it is not already:

npm i gatsby-source-filesystem

Usage

gatsby-config.js

module.exports = {
  plugins: [
    {
      resolve: `gatsby-transformer-yaml-plus`,
      options: {
        enableRemark: true,
        markdownPreface: 'md//',
      }
    },
    {
      resolve: `gatsby-source-filesystem`,
      options: {
        path: `./content/`,
      },
    },
  ],
}

The path ./content/ should contain all the YAML files you want to parse.

Markdown Support

The lack of markdown support in config-like files such as YAML has been an ongoing topic of discussion in the Gatsby community. A helpful feature of gatsby-transformer-yaml-plus is that it can optionally crawl through all the fields in a YAML file, and parse any fields which have a special markdownPreface identifier.

It looks like this:

title: A Good Title
description: md//This description has some **markdown** in it.

Where 'md//' is the preface string required to tell gatsby-transformer-yaml-plus to render that field as HTML. If you want to change this string, just set markdownPreface in the plugin options in gatsby-config.js

Structure of the Resulting Nodes

When processing your YAML files, this plugin can handle a root-level array of objects, like so:

people.yaml

- name: Meg
  age: 31
- name: Joe
  age: 17
- name: Pat
  age: 54

Or you can have root-level objects in multiple files, like so:

content/
  people/
    meg.yaml
    joe.yaml
    pat.yaml

meg.yaml

name: Meg
age: 31

joe.yaml

name: Joe
age: 17

pat.yaml

name: Pat
age: 54

In both cases, you'd end up with the same three nodes:

[
  {
    "name": "Meg",
    "age": 31,
  },
  {
    "name": "Joe",
    "age": 17,
  },
  {
    "name": "Pat",
    "age": 54,
  }
]

Queries

Because the resulting structure of the nodes is the same if you choose to use an array of objects or files containing a single object, the GraphQL query is the same.

{
  allPeopleYaml {
    edges {
      node {
        name
        age
      }
    }
  }
}

Which gives:

{
  allPeopleYaml: {
    edges: [
      {
        node: {
          name: "Meg",
          age: 31
        },
      },
      {
        node: {
          name: "Joe",
          age: 17
        },
      },
      {
        node: {
          name: "Pat",
          age: 54
        },
      },
    ]
  }
}

Configuration Options

These are all of the plugin options which can be set in gatsby-config.js

| Option Name | Value Type | Default | | --------------- | ---------- | ------- | | enableRemark | boolean | false | | markdownPreface | string | md// |