vite中如何高亮展示代码

937 阅读1分钟

custom Blocks

custom Blocks可以帮助我们直接在网页上展示已经写好的代码。避免重复写相同的代码。

  1. 在需要展示的代码上面加上
<demo>
标题
</demo>
  1. 创建 vite.config.ts
// @ts-nocheck
import fs from 'fs'
import {baseParse} from '@vue/compiler-core'

export default {
  base: './',
  assetsDir: 'assets',
  vueCustomBlockTransforms: {
    demo: (options) => {
      const { code, path } = options
      const file = fs.readFileSync(path).toString()
      const parsed = baseParse(file).children.find(n => n.tag === 'demo')
      const title = parsed.children[0].content
      const main = file.split(parsed.loc.source).join('').trim()
      return `export default function (Component) {
        Component.__sourceCode = ${
        JSON.stringify(main)
      }
        Component.__sourceCodeTitle = ${JSON.stringify(title)}
      }`.trim()
    }
  }
};
  1. 引入/传入需要显示的组件

component.__sourceCode 可显示代码 component.__sourceCodeTitle 可显示标题

prismjs

prismjs是一个可以高亮展示代码的库

  1. 安装 yarn add --dev prismjs
  2. 引入 prismjs
import 'prismjs';
import 'prismjs/themes/prism-okaidia.css';
  1. 由于该库比较老,我们需要从window上取到它
const Prism = (window as any).Prism;
  1. 调用prism
const code = Prism.highlight(codeString,Prism.languages.javascript, 'javascript');