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 Compat
为兼容 v0.14 而构建的 @shikijs/compat
包现已停止维护。请迁移到主包。
转换器匹配算法
转换器的 matchAlgorithm
选项在 v1.29.0 中引入,允许用户选择匹配算法。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
而不是@shikijs/core
导入FontStyle
和StackElementMetadata
。
- 正则表达式引擎
用户试用
如果你间接通过其他包(例如 vitepress
或 @nuxt/content
)使用 Shiki,而你无法直接控制 Shiki 的版本,则可以尝试在你的 package.json
中添加以下行,以强制使用 Shiki v2.0.0。
{
"resolutions": {
"shiki": "^2",
"@shikijs/core": "^2",
"@shikijs/transformers": "^2",
"@shikijs/markdown-it": "^2",
"@shikijs/rehype": "^2"
}
}
然后运行该工具,看看是否发出任何警告。如果发出警告,请将其报告给它们的仓库,以引起人们对即将到来的更改的注意。如果没有,则该工具应该与 Shiki v3.0.0 一起按预期工作,你可以进一步迁移到 v3,如下所示:
{
"resolutions": {
"shiki": "^3",
"@shikijs/core": "^3",
"@shikijs/transformers": "^3",
"@shikijs/markdown-it": "^3",
"@shikijs/rehype": "^3"
}
}
反馈
欢迎任何反馈!请随时在 GitHub 上提出 issue,让我们知道你的想法。