Skip to content

笔记站的技术使用的是vitepress,使用markdown写笔记,本身对于代码显示来说是有样式(颜色)的

因为我别出心裁的,自己有一个需求,比如说,我想把一大段代码贴到文章里,我可能需要把代码从编辑器里拷贝出来 一大段的贴到md文件里,导致md文件就难看,所以我希望把大段的demo代码提交到github,可以直接引用github的代码,直接显示到文章里,这样写代码和写文字就可以分开了,不用在文章里贴很多的代码了。

具体实现已经ok了,我大概可以将github的代码显示在文章中,具体实现如下 (这里显示的代码就是直接引用的github)

演示代码

代码的样式(颜色)我是使用的是prismjs

最近我发现,写的java代码,没有代码样式。

检查了一下包的用法,发现应该是相关的js没有引入

但是这个包是CJS的,我是ESM项目,官方的增加语言支持的API也就是loadLanguages我用不了,这个API内部用的require.resolve会报错

需要修改成import动态导入的形式

import('prismjs').then(Prism => {
  .....
})

类型报错,需要增加一个prismjs.d.ts文件

// types/prismjs.d.ts
declare module 'prismjs/components/*' {
  import { Grammar } from 'prismjs';
  const grammar: Grammar;
  export default grammar;
}

还有一点问题:

  1. 因为是import动态导入,没有办法按不同语言自动导入,需要提前列出来,就是上面代码loadPrismLanguage那一大坨,看起来很丑。
  2. 如上文试了一下tsx,发现不ok,好像报错了,简单看了一眼应该是包内部报的错,可能需要改包,先不管了