Introduction

Prism is a lightweight, extensible syntax highlighter, built with modern web standards in mind. It’s used in millions of websites, including some of those you visit daily

For more info on PrismJS Click Here

Install PrismJS using npm

I assume that your React project is configured correctly. After your React project is up and running. Install PrismJS on the terminal.

npm i prismjs

After we have installed prismjs we will import

  • Language Support
  • Themes
  • Plugins

Import Prism and Theme in your project

Here we are importing PrismJS and the Theme.

import Prism from "prismjs"; // Prism
import "prismjs/themes/prism-okaidia.min.css"; // Import theme

Themes are stored in the prismjs/themes/ directory. Here are all the possible themes supported by PrismJS.

  • prism-coy.min.css
  • prism-dark.min.css
  • prism-funky.min.css
  • prism-okaidia.min.css
  • prism-solarizedlight.min.css
  • prism-tomorrow.min.css
  • prism-twilight.min.css

Add language support and Plugins

In order to enable syntax highlighting we need the language from the 'prismjs/componenent/' directory. In this project we are going to highlight C++ code.

We are going to import plugins from the prismjs/plugins directory.

And we are going to use the normalize-whitespace plugin to remove all leading and trailing spaces in the code.

// C is required for C++ highlighting to work
require("prismjs/components/prism-c");

// Add language support for C++
require("prismjs/components/prism-cpp");

// To remove extra white spaces
require("prismjs/plugins/normalize-whitespace/prism-normalize-whitespace");

To see which plugins are supported in PrismJS Click Here

How to put code in HTML

After we have imported all the required files. We are place your code inside the pre > code tags, like the example below. Here, xxxx is the name of the language

To see all the languages supported by PrismJS Click Here

<pre>
  <code className="language-xxxx">
    <!-- Your code here -->
  </code>
</pre>

But, wait. It is not over yet, the syntax highlighting will not work yet now. We have to call the Prism.highlighAll() function to highlight our code after rendering the html.

Final Code Example

Now the final code. Here we are going to call the Prism.highlightAll() function inside useEffect() hook. This will highlight our code after the Component is rendered.

import Prism from "prismjs"; // Prism
import "prismjs/themes/prism-okaidia.min.css"; // Import theme

require("prismjs/components/prism-c");
require("prismjs/components/prism-cpp");
require("prismjs/plugins/normalize-whitespace/prism-normalize-whitespace");

function App() {

  useEffect(() => {
    Prism.highlightAll();
  });

  return (
    <pre>
      <code className="language-cpp">
        // Your First C++ Program

        #include <iostream>

        int main() {
            std::cout << "Hello World!";
            return 0;
        }


      </code>
    </pre>
  );
}

And now the rendered App component will have code highlighting enabled

Note: This process also works on NextJS