Skip to content

未来规划

我们计划在未来的主要版本中移除一些已废弃的 API 并优化代码除屑优化(tree-shaking)。 具体计划如下:

  • 👉 v1.x:仍支持已废弃的 API,仅在类型层面标记。可选择性开启运行时警告。
  • v2.0:无破坏性更改,但默认开启运行时废弃警告。
  • v3.0:移除已废弃的 API,包含破坏性更改。

在当前版本(从 v1.19.0 起),你可以通过在应用程序开始时调用 enableDeprecationWarnings() 来选择开启运行时警告。

ts
import { enableDeprecationWarnings, getHighlighter } from 'shiki'
enableDeprecationWarnings()
// 调用已废弃的用法将会显示警告:
// [SHIKI DEPRECATED]: Use `createHighlighter` instead
const shiki = await getHighlighter(/* ... */)

这将帮助你更好地为未来的变更做准备,实现平稳升级。

重要的废弃项

getHighlighter -> createHighlighter

这不涉及功能变更,主要是为了避免混淆而进行的命名修正。这应该是一个简单的查找替换操作。

WASM 相关 API

自 v0.16 引入引擎系统以来,WebAssembly 相关依赖不再是硬性要求。为了使代码树摇更容易,并将引擎与核心解耦,我们提取出了两个包:@shikijs/engine-oniguruma@shikijs/engine-javascript。这些包也分别从主包的 shiki/engine/onigurumashiki/engine/javascript 重新导出。

你可能需要更改导入路径:

ts
import { loadWasm } from 'shiki'
import { loadWasm } from 'shiki/engine/oniguruma'

getHighlighter 中的 loadWasm 字段被 engine 字段替代:

ts
import { createHighlighter } from 'shiki'
import { createOnigurumaEngine } from 'shiki/engine/oniguruma'
const shiki = await createHighlighter({
  // ...
  loadWasm: () => import('shiki/wasm'), 
  engine: createOnigurumaEngine(() => import('shiki/wasm')), 
})

以 MIT 许可证发布