Shiki v3.0.0
Shiki v3.0.0 是 另一个 无聊 的版本,移除了自 v1.x 开始标记并在 v2.x 中明确警告的弃用 API。
在 Shiki 中,新功能在次要版本中逐步发布,而主要版本则用于清理和移除弃用的 API。
如果您仍在使用 v1.x,请先 迁移到 v2.x。这应该为您提供顺利过渡到 v3.0.0 的路径。
破坏性变更
v1.x
:弃用的 API 仍然受支持,仅在类型级别上标记。可选的运行时警告以选择加入。v2.0
:没有破坏性变更,但默认启用运行时弃用警告。- 👉
v3.0
:移除弃用的 API,破坏性变更。
getHighlighter
-> createHighlighter
没有功能上的变化,更像是修正命名以避免混淆。应该是简单的查找和替换。
WASM 相关 API
自 v1.16 引入 引擎系统 后,WebAssembly 相关依赖不再是硬性要求。为了促进树摇(tree-shaking)并将引擎与核心解耦,提取了两个包:@shikijs/engine-oniguruma
和 @shikijs/engine-javascript
。这两个包也从主包重新导出为 shiki/engine/oniguruma
和 shiki/engine/javascript
。
您可能需要更改您的导入路径:
import { loadWasm } from 'shiki'
import { loadWasm } from 'shiki/engine/oniguruma'
createHighlighterCore
中的 loadWasm
字段被 engine
字段替换:
import { createHighlighter } from 'shiki'
import { createOnigurumaEngine } from 'shiki/engine/oniguruma'
const shiki = await createHighlighter({
// ...
loadWasm: () => import('shiki/wasm'),
engine: createOnigurumaEngine(() => import('shiki/wasm')),
})
同时,@shikijs/core
包不再包含引擎或 wasm 二进制文件。您需要从 @shikijs/engine-oniguruma
和 @shikijs/engine-javascript
包中导入它们。
Shiki 兼容性
为与 v0.14 兼容而构建的 @shikijs/compat
包现在已停止维护。请迁移到主包。
转换器匹配算法
在 v1.29.0 中引入了转换器的 matchAlgorithm
选项,允许用户选择匹配算法。在 v3.0.0 中,默认值从 v1
更改为 v3
。
了解更多。
其他破坏性变更
createdBundledHighlighter
需要一个单一的对象样式参数@shikijs/core
- 正则引擎
createJavaScriptRegexEngine
和createOnigurumaEngine
不再包含,分别从@shikijs/engine-oniguruma
和@shikijs/engine-javascript
导入 @shikijs/core/wasm-inline
被@shikijs/engine-oniguruma/wasm-inline
替换- 从
@shikijs/vscode-textmate
导入FontStyle
和StackElementMetadata
,而不是@shikijs/core
- 正则引擎
作为用户尝试
如果您通过其他包间接使用 Shiki,例如 vitepress
或 @nuxt/content
,在这些情况下您无法直接控制 Shiki 的版本,可以尝试在 package.json
中添加以下行,以强制使用 Shiki v2.0.0。
{
"resolutions": {
"shiki": "^2",
"@shikijs/core": "^2",
"@shikijs/types": "^2",
"@shikijs/transformers": "^2",
"@shikijs/markdown-it": "^2",
"@shikijs/rehype": "^2"
}
}
然后运行工具查看是否发出任何警告。如果有,请向其对应的仓库报告,以提升对即将发生的变更的认识。如果没有,工具应能按预期与 Shiki v3.0.0 一起正常工作,此时您可以进一步迁移到 v3,如下所示:
{
"resolutions": {
"shiki": "^3",
"@shikijs/core": "^3",
"@shikijs/types": "^3",
"@shikijs/transformers": "^3",
"@shikijs/markdown-it": "^3",
"@shikijs/rehype": "^3"
}
}
反馈
欢迎任何反馈!随时在 GitHub 上提出问题,让我们知道您的想法。