Конфигурация бабеля PrismJS не работает в React

У меня установлен babel-plugin-prismjs, созданный .babelrc с этим кодом:

{
    "plugins": [
        ["prismjs", {
            "languages": ["javascript", "css", "html"],
            "plugins": ["line-numbers", "show-language", "copy-to-clipboard", "toolbar", "inline-color"],
            "theme": "prism-tomorrow",
            "css": true
            }
        ]
    ]
}

и импортировал Prism в App.js.

Это код в App.js:

import React, { useEffect } from "react";
import Prism from "prismjs";

const code = `
const foo = 'foo';
const bar = 'bar';
console.log(foo + bar);
`.trim()

function App() {
  useEffect(() =>{
    Prism.highlightAll();
  }, [])

  return (
    <pre className="line-numbers">
      <code className="language-js">
        {code}
      </code>
    </pre>
  );
}

export default App;

Но веб-страница не выделяет синтаксис. Что мне здесь не хватает?


person skcode    schedule 14.05.2021    source источник


Ответы (1)


Если вы используете это в проекте реакции, построенном на create-react-app (CRA), ваш код не будет работать. Ваш файл .babelrc не используется. CRA не раскрывает конфигурацию babel. Проверьте этот ответ, чтобы узнать больше об этом.

Для вашего варианта использования проще всего было бы перейти на страницу prismjs, чтобы загрузить файл CSS. Выберите правильную тему и нажмите «СКАЧАТЬ CSS» внизу страницы.

Импортируйте этот файл CSS в свой код App.js.

import '../prism.css';

Это будет работать для Javascript и некоторых других встроенных языковых пакетов. Если правильная разметка для вашего языка не отображается, вам также необходимо импортировать эти языки вручную.

Примечание. Это просто обходной путь, чтобы не выгружать проект CRA. По возможности рекомендуется использовать babel-plugin-prismjs.

person Perceo    schedule 23.05.2021