你已经成功了一半。您仍然需要导入prismjs
某个地方,通常是在您的app.js
文件中,然后调用Prism.highlightAll()
您想要语法突出显示的页面的适当文件。
我的过程如下:
- 设置我的
.babelrc.js
文件:
const env = require('./env-config')
module.exports = {
presets: ['next/babel'],
plugins: [
[
'transform-define',
env,
],
[
'prismjs', {
'languages': ['javascript', 'css', 'html', 'jsx'],
'plugins': ['line-numbers', 'show-language', 'copy-to-clipboard'],
'theme': 'tomorrow',
'css': true
},
]
],
}
- 导入
prismjs
到我的_app.js
文件中(因为我使用的是 Next.js,但使用 React,您可以将其导入到我们的app.js
文件中:
// ...
import 'prismjs'
// ...
- 使用
prismjs
API 调用.highlightAll()
所需页面上的方法:
function usePrismHighlightAll() {
useEffect(() => {
Prism.highlightAll()
}, [])
}
export default function Page () {
usePrismHighlightAll()
// ...
}
作为旁注,
还可以将usePrismHighlightAll()
钩子移动到文件中的某个位置app.js
,以便您可以在所有页面中启用语法突出显示,如果这样可以避免您在多个位置调用钩子。但是,我尝试这样做,不幸的是,它在 Next.js 中不起作用:
/* DO NOT USE THIS CODE NEXT.JS AS IT DOES NOT WORK */
import 'prismjs'
// ...
function usePrismHighlightAll() {
useEffect(() => {
Prism.highlightAll()
}, [])
}
export default function App ({ Component, pageProps }) {
usePrismHighlightAll()
return (
<>
<Layout>
<Header />
<Component {...pageProps} />
</Layout>
</>
)
}
/* DO NOT USE THIS CODE NEXT.JS AS IT DOES NOT WORK */
所以,坚持我在步骤 1-3 中概述的过程。这对我来说可以在页面的第一次加载时启用语法突出显示,如果这对你有用,请告诉我。