html과 json을 예쁘게 보여줄 필요가 있어 라이브러리를 찾아보다가 prism.js를 사용해 보게 되었다.
react에서 사용해 보기 위해 prism-react-renderer부터 시작해봤다.
npm install --save prism-react-renderer
<Highlight code={jsonString} theme={themes.oneLight} language="js">
{({ className, style, tokens, getLineProps, getTokenProps }) => (
<pre className="mb-5 text-xs font-light text-gray-700">
{tokens.map((line, i) => (
<div {...getLineProps({ line, key: i })}>
{line.map((token, key) => (
<span {...getTokenProps({ token, key })} />
))}
</div>
))}
</pre>
)}
</Highlight>
custom theme이 다양하게 있었지만, 오히려 기본 theme이 어울릴 것 같다는 의견에 서드파티가 아닌 Prism.js 공식 사이트에서 제공해준 대로 개발해 보았다.
npm i -D @types/prismjs
npm uninstall prism-react-renderer
npm install prismjs
import Prism from "prismjs";
import 'prismjs/components/prism-json' // Language
import 'prismjs/themes/prism.css' // Theme
...
useEffect(() => {
Prism.highlightAll()
}, []);
...
<code className="language-html" style={{ backgroundColor: "transparent" }}>{ html }</code>
오히려 사용은 더 간단해진 듯 했다. html을 더 쉽게 렌더링해 주었다.
그러고 보니 default theme은 notion에 적용된 것과 비슷한 것 같다!
'frontend' 카테고리의 다른 글
[TIL] javascript html parser (0) | 2023.12.16 |
---|---|
[TIL] npm ci vs npm install (0) | 2023.10.17 |
Canvas vs Svg (0) | 2023.09.10 |
JS로 파일 다운로드 (0) | 2023.09.10 |
가로 세로 스크롤 되는 테이블 만들기 (0) | 2023.04.24 |