DEV Community

Niklas
Niklas

Posted on • Originally published at niklasmtj.de

4

Implement PrismJS in GatsbyJS

I recently implemented PrismJS for code highlighting in GatsbyJS . Since there weren’t that many posts to do a quick installation here is how I did it.

Install PrismJS

First, install PrismJS and it’s Gatsby plugins:

npm install --save gatsby-transformer-remark gatsby-remark-prismjs prismjs

This will make sure that you have all the plugins needed. Next, go to your gatsby-config.js and put the following code after your declaration of gatsby-transformer-remark since this is a plugin it has to go in the plugins section like this:

// gatsby-config.js
resolve: `gatsby-transformer-remark`,
      options: {
        plugins: [
            {
          resolve: `gatsby-remark-prismjs`,
          options: {
            aliases:{sh: "bash", js:"javascript"},
            showLineNumbers: true,
          }
        }],
      },

Choose a PrismJS Theme

After that you have to include the PrismJS theme you like in your Gatsby-browser.js file and also include the line numbers like that

// gatsby-browser.js
require("prismjs/themes/prism-tomorrow.css");
require("prismjs/plugins/line-numbers/prism-line-numbers.css");

Optional: Atom Editor Style

Since I didn’t really like the default themes that PrismJS comes with I looked for a one that I liked more. And I found my beloved Atom Editor Style in the additional themes that are available on GitHub. To include it install prism-themes with npm.

npm i prism-themes

And include change your gatsby-browser.js to this:

// gatsby-browser.js
require("prism-themes/themes/prism-atom-dark.css");
require("prismjs/plugins/line-numbers/prism-line-numbers.css");

Change your CSS

Because of the line numbers, there have to be changes in your CSS. Mine is in /components/layout.css. There you have to add the following lines to get everything in order:

.gatsby-highlight {
  background-color: #1d1f21;
  border-radius: 0.3em;
  margin: 0.5em 0;
  padding: 1em;
  overflow: auto;
}

.gatsby-highlight pre[class*="language-"].line-numbers {
  padding: 0;
  padding-left: 2.8em;
  overflow: initial;
}

That’s it. You just implemented PrismJS in GatsbyJS to highlight your code blocks with the Atom Editor Style.

PS: I also updated my GatsbyJS starter to use PrismJS.

Thank you for reading,
Niklas


This post was first posted on my blog: niklasmtj.de

Photo by Émile Perron on Unsplash

SurveyJS custom survey software

Build Your Own Forms without Manual Coding

SurveyJS UI libraries let you build a JSON-based form management system that integrates with any backend, giving you full control over your data with no user limits. Includes support for custom question types, skip logic, an integrated CSS editor, PDF export, real-time analytics, and more.

Learn more

Top comments (1)

Collapse
 
davidkartuzinski profile image
David Kartuzinski • Edited

Hi Niklas,

This is actually a great tutorial and I followed it for a new theme I am making for Gatsby. Thank you very much.

I am currently banging my head trying to implement gatsbyjs.org/packages/gatsby-remar... .

How would you feel adding to your tutorial and adding this? I will forever be grateful and anyone reading my code will see a link to this post!

EDIT:

I forgot to mention I am using MDX. And I found this example in GitHub - github.com/iamskok/gatsby-mdx-rema... - but their steps are not working for me :(

EDIT EDIT:

Apparently this will not work with MDX. Here is my branch if you are interested: github.com/davidkartuzinski/gatsby...

And here is an issue comment: github.com/iamskok/gatsby-remark-c..., mine: github.com/iamskok/gatsby-remark-c...

Image of Docusign

🛠️ Bring your solution into Docusign. Reach over 1.6M customers.

Docusign is now extensible. Overcome challenges with disconnected products and inaccessible data by bringing your solutions into Docusign and publishing to 1.6M customers in the App Center.

Learn more