Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

gatsby-transformer-javascript-frontmatter

Package Overview
Dependencies
Maintainers
12
Versions
310
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

gatsby-transformer-javascript-frontmatter

Gatsby transformer plugin for JavaScript to extract exports.frontmatter statically.

  • 5.14.0-next.1
  • Source
  • npm
  • Socket score

Version published
Weekly downloads
665
decreased by-41.36%
Maintainers
12
Weekly downloads
 
Created
Source

gatsby-transformer-javascript-frontmatter

Parses JavaScript files to extract frontmatter from exports.

Install

npm install gatsby-source-filesystem gatsby-transformer-javascript-frontmatter

How to use

To use this plugin you also need gatsby-source-filesystem installed and configured.

// In your gatsby-config.js
module.exports = {
  plugins: [
    {
      resolve: `gatsby-source-filesystem`,
      options: {
        name: `pages`,
        path: `${__dirname}/src/pages/`,
      },
    },
    "gatsby-transformer-javascript-frontmatter",
  ],
}

Parsing algorithm

This plugin uses @babel/parser and @babel/traverse to statically read the frontmatter exports.

In a .js (or .jsx / .ts / .tsx) file, export a frontmatter object to set your metadata variables, like so:

import React from "react"

exports.frontmatter = {
  title: "Choropleth on d3v4",
  written: "2017-05-04",
  layoutType: "post",
  path: "choropleth-on-d3v4",
  category: "data science",
  description: "Things about the choropleth.",
}

export default MyComponent

You can also use a named export for the frontmatter object:

export const frontmatter = {
  title: "Choropleth on d3v4",
  written: "2017-05-04",
  layoutType: "post",
  path: "choropleth-on-d3v4",
  category: "data science",
  description: "Things about the choropleth.",
}

How to query

You'd be able to query your frontmatter like:

{
  allJavascriptFrontmatter {
    edges {
      node {
        frontmatter {
          error
          path
          title
          written
          category
          description
          updated
        }
      }
    }
  }
}

Which would return something like:

{
  "data": {
    "allJavascriptFrontmatter": {
      "edges": [
        {
          "node": {
            "frontmatter": {
              "error": false,
              "path": "choropleth-on-d3v4",
              "title": "Choropleth on d3v4",
              "written": "2017-05-04",
              "category": "data science",
              "description": "Things about the choropleth.",
              "updated": null
            }
          }
        }
      ]
    }
  }
}

Any attribute on "frontmatter" across your js files will be exported. If a file is missing it, the value will be null.

The error field will contain false or an object with error information just to give a surface level view of what the query is pulling out.

{
  "error": {
    "err": true,
    "message": "we threw an error",
    "stack": "This is a stringified stack trace"
  }
}

Keywords

FAQs

Package last updated on 04 Jan 2024

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc