最近对博客的代码代码块进行整理,不论是较为陈旧的代码,还是新的都需要定期维护的,里面有写代码的格式上并不便于阅读。
所以这里查阅了 官方文档。
从官方文档来看支持的种类是很多的, 除了 quartz 官方支持的以外,一些 shikijs 支持的子 transform 是需要自己添加的,所以本文记录一下如何添加的,添加后的效果是什么样子的.
代码修改
代码方面只需要修改2个文件即可。
import {
transformerNotationDiff,
transformerNotationWordHighlight,
transformerNotationFocus,
transformerNotationErrorLevel,
} from '@shikijs/transformers';
// ...
export const SyntaxHighlighting: QuartzTransformerPlugin<Options> = (
userOpts?: Partial<Options>,
) => {
const opts: Partial<CodeOptions> = {
...defaultOptions,
...userOpts,
transformers: [
transformerNotationDiff(),
transformerNotationWordHighlight(),
transformerNotationFocus(),
transformerNotationErrorLevel(),
]
}
return {
name: "SyntaxHighlighting",
htmlPlugins() {
return [[rehypePrettyCode, opts]]
},
}
}
随后在新增一个 sass 文件即可,这里写的比较粗糙,没有整理变量。
pre.has-diff {
.diff.add {
background-color: rgba(16, 185, 129, .14);
&::before {
content: "+";
color: #18794e;
}
}
.diff.remove {
background-color: rgba(244, 63, 94, .14);
opacity: .7;
&::before {
content: "-";
color: #b34e52;
}
}
}
pre {
.highlighted-word {
background-color: #f6f6f7;
border: 1px solid #c2c2c4;
padding: 1px 3px;
margin: -1px -3px;
border-radius: 4px;
}
code .highlighted.error {
background-color: rgba(244, 63, 94, .14);
}
code .highlighted.warning {
background-color: rgba(234, 179, 8, .14);
}
}
pre.has-focused [data-line]:not(.focused) {
filter: blur(.095rem);
opacity: .4;
transition: filter .35s,opacity .35s
}
pre.has-focused [data-line]:not(.focused) {
opacity: .7;
transition: filter .35s,opacity .35s
}
pre:hover.has-focused [data-line]:not(.focused) {
filter: blur(0);
opacity: 1
}
试试效果
文字高亮
顶部支持
const [age, setAge] = useState(50);
const [name, setName] = useState('Taylor');
使用 !code word
支持
const message = 'Hello World'
console.log(message) // prints Hello World
add 和 remove
const add
const delete
高亮代码
使用 {number}
方式高亮
const a = 1
const b = 2
const c = 3
使用 // [!code highlight]
const a = 1
const b = 2 // [!code highlight]
const c = 3
focus 功能
const a = 1
const b = 2
const c = 3
const c = 3
const b = 2
const a = 1
颜色标记
console.log('No errors or warnings')
console.error('Error')
console.warn('Warning')
本文标题:为 quartz 添加额外 shikijs transform
永久链接:https://iceprosurface.com/blog/quartz-shikijs-transform/
作者授权:本文由 icepro 原创编译并授权刊载发布。
版权声明:本文使用「署名-非商业性使用-相同方式共享 4.0 国际」创作共享协议,转载或使用请遵守署名协议。