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-remark-opengraph

v2.0.1

Published

Generate beautiful open graph images for Gatsby

Downloads

16

Readme

Motivation

If your website is shared, you’ll want to present the contents of your page in an optimal way to encourage people to pay it a visit. Open graph makes links to your website "unfold" into an image, title, and description.

If you want to find out more about this, read my article:

Key Features

This plugin allows you to create beautiful open graph images for your Gatsby site at build time, tailor-made to your content.

  • Choose a background image or color
  • Layout any number of texts on top of that background
  • Choose font, size, color and alignment for every text
  • Choose custom image dimensions and restrict your text to bounding boxes

Installation

Install gatsby-remark-opengraph as a development dependency to your current project

npm

npm install -D gatsby-remark-opengraph

yarn

yarn add -D gatsby-remark-opengraph

How to use

The default usage of this package is as a gatsby remark plugin.

However, you can also use it as a Node.js package to generate open graph images for any other usecase, for example for your Gatsby homepage or in a FaaS setup for your server side rendered site.

As a gatsby remark plugin

Use gatsby-remark-opengraph in the remark plugins array of your gatsby-config.js:

plugins: [
  {
    resolve: 'gatsby-transformer-remark',
    options: {
      plugins: [
        {
          resolve: 'gatsby-remark-opengraph',
          options: {
            background: '#bada55',
            // if you create post-specific open graph images, be sure to prefix `./public`
            outputPath: markdownNode => path.join('./public', markdownNode.fields.slug),
            texts: [
              {
                text: 'Hello world!',
                font: require.resolve('./src/assets/yourFont.ttf')
              }
            ]
          },
        },
      ],
    },
  },
],

Options

| Name | Type | Description | | | :--------------- | :----------------- | :----------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | | background | string | Required | Either a 6 digit hex RGB color code or the absolute path to a background image. | | texts | Text[] | Required | An array of Text configuration objects. Can be empty. See table below! | | filename | string | Default 'og-image.jpg' | Filename the open graph image is saved as. | | width | number | Default: 1200 | Width of open graph image in pixels. Must be equal to the background image width, if a background image is used. | | height | number | Default: 630 | Height of open graph image in pixels. Must be equal to the background image height, if a background image is used. | | outputPath | string | function | Default: './public' | Path the open graph image is saved to.Called with the current markdown node if a function is given.Is concatenated with the filename option to form a full path. If you change this and you're using Gatsby, don't forget to prefix '.public'! | | log | boolean | Default: true | Toggles output logging. |

Text options

For each text that you want to write on top of your background, add an object to the array of texts.

For each entry, you must at least provide the text itself and a font file:

| Name | Type | Description | | | :-------------------- | :-------------------------- | :-------------------- | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | text | string | function | Required | Your text. Called with the current markdown node if a function is given. | | font | string | Required | Absolute path to a TrueType .ttf font. | | fontSize | number | Default 64 | Font size of your text. | | color | string | Default: '#000000' | 6 digit hex RGB color code. | | x | number | Default: 0 | X position of your text in Pixels. | | y | number | Default: 0 | Y position of your text in Pixels. | | maxWidth | number | Default: Image width | Max width of your text. After reaching it, text will break to a new line. | | maxHeight | number | Default: Image height | Max height of your text. After reaching it, an error will be thrown! | | horizontalAlign | 'left' / 'center' / 'right' | Default: 'left' | Horizontal alignment of your text.left: text will grow to the right from it's x positioncenter: text will grow to left and right from it's x positionright: text will grow to the left from it's x position | | verticalAlign | 'top' / 'center' / 'right' | Default: 'top' | Vertical alignment of your text.top: text will grow to the bottom from it's y positioncenter: text will grow to top and bottom from it's y positionbottom: text will grow to the top from it's y position |

General usage

The plugin also exports a named function that accepts the same options as the remark plugin shown above, but function options are called with null instead of a markdownNode so it's a good idea to provide strings for outputPath and Text.text.

If you're using Gatsby, you can use this in your gatsby-node.js to generate a generic open graph image for your site:

const { createImage } = require('gatsby-remark-opengraph')

exports.createPages = async ({
  actions,
  graphql,
  reporter,
}) => {
  await createImage({
    /**
     * OPTIONS, see above!
     */
  })
}

Examples

Please provide me with examples of the open graph images that you generated! 😀

I will choose a few beautiful examples and then show them here with a link to your site.