diff --git a/.babelrc b/.babelrc index b88ce11..e070296 100644 --- a/.babelrc +++ b/.babelrc @@ -1,5 +1,12 @@ { - "plugins": ["@loadable/babel-plugin"], + "plugins": [ + "@loadable/babel-plugin", + ["prismjs", { + "languages": ["css", "html", "javascript", "jsx", "tsx"], + "theme": "twilight", + "css": true + }] + ], "presets": [ "@babel/preset-env", "@babel/preset-react" diff --git a/client/helpers/highlight.ts b/client/helpers/highlight.ts index 362a025..6378ef0 100755 --- a/client/helpers/highlight.ts +++ b/client/helpers/highlight.ts @@ -3,19 +3,14 @@ * (c) 2019 - 2020 Nguyen Huu Phuoc */ -import hljs from 'highlight.js/lib/highlight'; // tslint:disable-line -import javascript from 'highlight.js/lib/languages/javascript'; // tslint:disable-line -import html from 'highlight.js/lib/languages/xml'; // tslint:disable-line - -hljs.registerLanguage('javascript', javascript); -hljs.registerLanguage('html', html); +import Prism from 'prismjs'; const highlight = (input: string, language: string) => { const lang = language || 'html'; - const { value } = hljs.highlight(lang, input); + const value = Prism.highlight(input, Prism.languages[language], language); const highlighted = value.replace('&', '&').trim(); - return `${highlighted}`; + return `${highlighted}`; }; -export default highlight; +export default highlight; \ No newline at end of file diff --git a/package.json b/package.json index 8bc4110..da60ad3 100644 --- a/package.json +++ b/package.json @@ -13,6 +13,7 @@ "dependencies": { "@loadable/component": "^5.14.1", "highlight.js": "^10.7.1", + "prismjs": "^1.23.0", "react": "^17.0.2", "react-dom": "^17.0.2", "react-helmet": "^6.1.0", @@ -24,11 +25,13 @@ "@babel/preset-react": "^7.13.13", "@loadable/babel-plugin": "^5.13.2", "@types/loadable__component": "^5.13.3", + "@types/prismjs": "^1.16.4", "@types/react": "^17.0.3", "@types/react-dom": "^17.0.3", "@types/react-helmet": "^6.1.0", "@types/react-router-dom": "^5.1.7", "babel-loader": "^8.2.2", + "babel-plugin-prismjs": "^2.0.1", "cpx2": "^3.0.0", "css-loader": "^5.2.0", "html-webpack-plugin": "^5.3.1",