Repolode
johnsoncodehk

johnsoncodehk/muggle-string

一个无依赖的 TypeScript 库,用于多方同时改写源码,并通过语言服务spans与 v3 source map 映射回原文。

Star
24
Fork
2
未关闭 Issue
0
最近提交
17小时前

这是什么?

muggle-string 可以在多个位置同时改写一段源码,并把改写后的输出映射回原始源码。它最初为 vuejs/language-tools 编写,用于把 Vue 单文件组件转换为供语言服务使用的 TypeScript 代码,多个插件会编辑同一段代码,而输出仍需保留悬停、补全、重命名等编辑器功能。

编辑操作只是追加到各个写入者的列表中,渲染时才排序,编辑过程不做文本查找或复制。写入者带有优先级,决定同一位置内容的先后顺序,因此结果由插件优先级决定,而非调用顺序。删除操作可以合并,剪切功能允许把一段范围移动到输出的其他位置,并保留其映射。

同一批渲染结果既可以生成语言服务使用的 spans(Verbatim 与 Atom),也可以生成 v3 source map。该库仅以 ES 模块发布,没有任何依赖。

核心功能

  • 01多个写入者可以同时编辑同一段源码,顺序由优先级决定。
  • 02删除和替换操作可以叠加,互不覆盖。
  • 03剪切的范围可以移动到输出中的其他位置。
  • 04同一批结果可生成语言服务 spans 或 v3 source map。
  • 05无运行时依赖,以 ES 模块形式发布。

适用场景

  • 为基于模板的文件格式开发语言服务插件,生成 TypeScript 代码。
  • 把模板语言编译为 HTML,同时保留到原始位置的映射。
  • 为对单个文件进行大量编辑的代码转换工具生成 source map。

收录于专题

标签

#source-map#code-transformation#typescript#language-server#compiler

常见问题

muggle-string 是什么?
一个无依赖的 TypeScript 库,用于多方同时改写源码,并通过语言服务spans与 v3 source map 映射回原文。 muggle-string 可以在多个位置同时改写一段源码,并把改写后的输出映射回原始源码。它最初为 vuejs/language-tools 编写,用于把 Vue 单文件组件转换为供语言服务使用的 TypeScript 代码,多个插件会编辑同一段代码,而输出仍需保留悬停、补全、重命名等编辑器功能。
muggle-string 可以免费使用吗?用的什么许可证?
muggle-string 以 MIT 许可证开源。用于商业产品前,请先确认许可证条款。
muggle-string 还在维护吗?
活跃维护中。muggle-string 最近一次提交是在 2026年11月6日。
muggle-string 适合用来做什么?
为基于模板的文件格式开发语言服务插件,生成 TypeScript 代码。 把模板语言编译为 HTML,同时保留到原始位置的映射。 为对单个文件进行大量编辑的代码转换工具生成 source map。
在哪里获取 muggle-string?
源代码和安装说明在 GitHub 上:https://github.com/johnsoncodehk/muggle-string

概要由 AI 根据项目 README 生成;GitHub 数据每日更新。

相关项目