@chatium/vue-ts-mapper-rs

中文文档
0.2.7发布于 2026/10/14MIT零依赖近 30 天下载 3120

Vue 单文件组件的 TypeScript 7 内容映射器, 用 Rust 写

中文使用文档
文档目录8 节
  1. 使用量
  2. 没有触摸到Tsconfig
  3. 选项
  4. 与 vue- tsc 相比
  5. 业绩
  6. 如何运作
  7. 发展
  8. 许可证

{\fn华文楷体\fs20\bord1\shad1\1che0e0e0\2ch000000}相去相去相去相去相去相去相去相去相去相去相去相去相去相去相去相去相去相去相去相去相去相去相去相去相去相去相去相去相去相去相去相去相去相去相去相去相去相去相去相去相去相去相去相去相去相去相去相去相去相去相去相去相去相去相去相去相去相去相去相去相去相去相去相去相去相去相去相去相去相去相去相去相去相去相去相去相去相去相去相去相去相去相去相去相去相去相去相去相去相去相去相去相去相去相去相去相去相去相去相去相相去相去相去相去相去相去相去相去相去相去相去相去相相去相去相去相去相

A 类 类型脚本 7 内容映射器 vue 单文件 组件,用 Rust 写出。 带着它, tsc (第7.1页+, tsgo() 类型检查 .vue 文件 本地化:映射器将每个 SFC 转换成虚拟类型Script 文件并加跨度映射 编译器报告在 .vue 来源.

虚拟代码生成是一个端口 @vue/language-core (v4内容-马普分行, vuejs/语言工具# 6170, (中文(简体) ), 与检查语义 vue-tsc 3.3 两种不同者,请参看TypeScript 6 与 vue- tsc 相比) (中文(简体) ). 通用: TypeScript 中的任何 Vue 3 项目 或 JavaScript, 它检查一个工程的一小部分 vue-tsc时间和记忆.

使用量

安装 TypeScript 7.1 和映射器( macOS 和 Linux、 x64 和 arm64 的预建二进制),以及 Windows x64在软件包中:

npm i -D [email protected] @chatium/vue-ts-mapper-rs

登记在册 tsconfig.json数字 :

{
  "compilerOptions": { "strict": true, "noEmit": true },
  "include": ["src/**/*.ts", "src/**/*.vue"],
  "contentMappers": [
    {
      "package": "@chatium/vue-ts-mapper-rs",
      "extensions": [".vue"],
      // only for CLI checks: skips the editor-feature flags of the mappings
      "options": { "languageFeatures": false }
    }
  ]
}

并启用外部代码运行编译器 :

npx tsc --runExternalCode --noEmit

没有触摸到Tsconfig

vue-tsgo 在已存在的 tsconfig (它) 上运行已注册的地图编译器 从临时目录中扩展它,因为 TypeScript 解析来自 tsconfig的位置). 不需要在项目中安装 :

npm exec --yes \
  [email protected] \
  --package=@chatium/vue-ts-mapper-rs \
  -- vue-tsgo --noEmit

vue-tsgo 运行其中第一个安装在机器上的结构: tsrs (TypeScript 7的Rust端口,最快,最快) 最小的内存: 在我们的Vue项目上,比 typescript 七分半的记忆, @chatium/tsc-rs (另一个Rust口),那么 typescript。 。 。 . VUE_TSGO_TSC=tsc-rs 开始于 @chatium/tsc-rs, (中文(简体) ), VUE_TSGO_TSC=typescript 运行 typescript数字 :

npm exec --yes --package=tsrs --package=@chatium/vue-ts-mapper-rs -- vue-tsgo --noEmit

VUE_TSGO_MAX_MEMORY=<size> (例如 1G 或者说 1500M保留 tsrs 接近这个记忆: 结束 这, tsrs 退出文件之间的最大检查器( q)--maxMemory),下至16 MB的跳棋 (单位:千美元)TSRS_RETIRE_MIN,除非设置). 在我们最大的Vue项目上 1G 将峰值降低四分之一至一 第三个大约相同的速度;解析出的程序本身是地板. @chatium/tsc-rs 财务报告和审定财务报表 typescript 别管它.

vue-tsgo 选择 tsc (单位:千美元)-p 选择tsconfig, ./tsconfig.json (默认情况下). 一个使用 tsconfig 的 ${configDir} 或相对 types 条目根据此进行解析 临时目录; 在 tsconfig 中注册映射器.

选项

地图员的条目 options 选择 Vue 编译器选项 @vue/language-core (单位:千美元)target, (中文(简体) ), lib, (中文(简体) ), strictTemplates, (中文(简体) ), checkUnknownProps, (中文(简体) ), strictCssModules, (中文(简体) ), fallthroughAttributes, (中文(简体) ), dataAttributes, (中文(简体) ), macros平地而不是筑起巢穴 vueCompilerOptions。 。 。 . vueCompilerOptions 图形 extends 链条也读取(在条目选项下),作为 每个文件 <!-- @key value --> 评论. target 默认为版本 node_modules/vue 并回到最新的.

一样 vue-tsc 3.3,模板默认为宽大:倒转属性,未知事件, 允许指令和组件 v-model 未检查事件 . strictTemplates: true 打开 checkUnknownProps, (中文(简体) ), checkUnknownEvents, (中文(简体) ), checkUnknownDirectives, (中文(简体) ), checkUnknownComponents 财务报告和审定财务报表 strictVModel (各可自设.

不支持: Vue 语言插件(plugins,例如Pug或Markdown模板)是 JavaScript 和 未装入; a <template lang="pug"> 未选中, 如没有插件.

与 vue- tsc 相比

已核对 vue-tsc 3.3.12和3.3.11 (文字版 6.0.3),通过类型检查整个项目 并按文件、位置和代码对诊断进行分解:12个生产工作空间(XQ11 000 SFC) 和8个开源项目(vitesse、vue-pure-admin、vitepress及其文件、幻灯片、, 元素加,光环,克提亚。 在开源的上,除项目外,输出是相同的 以下;无 vue-tsc 诊断被映射器对生成代码的压制所隐藏(检查) 通过重运行 VUE_TS_MAPPER_KEEP_UNMAPPED=1) (中文(简体) ).

有什么不同,为什么:

  • JS组件被打入. 与 allowJs: false, (中文(简体) ), vue-tsc 输入 .vue 文件 带有 Java 脚本 <script> 作为 any 并在进口时报告TS7016。 TypeScript 7 类型, 因此检查这些组件的道具、事件和插槽(错误道具类型, null 转至 (单位:千美元) Number prop,.)和TS7016 以及后续隐含 -any 错误已去.
  • 类型脚本 7 本身输入 .ts 财务报告和审定财务报表 .vue 相同:报告超载错误(TS2769) 参数而不是调用(所以 // @ts-ignore 上面两行不再覆盖它, 消息更具体(TS2552"你的意思是",TS2741而不是TS2345),解构 也许..undefined 值报告(TS2488),一个物体的第一个多余属性 文字按照源顺序, JS 风格 Fn.prototype = { … } 内 .ts 文件不再类型 this,以及 TuplifyUnion- 风格的递归型可以击中TS5114.
  • vue-tsc 未复制的假阳性: 从生成代码开始的错误 vue-tsc drops(它错过了例如模板中导入函数的错误参数计数), .value 用于缩小位置的函数/类/enum/导入(3.3.12), 内部参考文献 v-if="false" 块,失去附件的收缩 v-ifs, (中文(简体) ), v-for 插槽后丢失的变量(3.3.12),明确 import { defineProps } from 'vue' (TS2440, 3.3.11),以及生成代码中的语法错误 vue-tsc 隐藏( 空) @submit.prevent="", (中文(简体) ), v-model="x as T",在 <template v-else">)是有效的代码 或此处属性的普通错误.
  • 打开脚本 (缺失) } 结尾 <script setup>页:1 脚本 vue-tsc 没有报告.

代码来源于 vuejs/ 语言工具 # 6170 at e75a638e (有 tools/reference/language-tools.patch);快照 内 tests/fixtures 记录它现在偏离该参考之处.

业绩

vue-tsc --noEmit (3.3.12, TypeScript 6.0.3) 反对 tsc --runExternalCode --noEmit (TypeScript 7.1.0-dev.20261003.1) 与这台地图机,在苹果M系列笔记本电脑上(墙上时间,最高峰) 进程树的内存 :

项目章鱼风切变类型脚本 7 + vue- ts- mapper- rs
生产工作空间3 571个130 s, 13.0 GB (英语)9.3 s, 6.5 GB (英语)
生产工作空间2 901个65 s, 7.2 GB (英语)5.5 s, 4.0 GB 键
生产工作空间2 725个105 s, 11.3 GB (英语)7.9 s, 5.8 GB (英语)
生产工作空间1 931 (中文(简体) )124 s, 12.3 GB (英语)11.6 s, 6.7 GB 键
生产工作空间903号39 s, 3.4 GB (英语)3.8 s, 2.4 GB 键
光环( 控制台)296号8.5 s, 1.1 GB (英语)1.1 s, 0. 8 GB 键
纯日出255 (英语)13.6 s, 1.6 GB (英语)1.6 s, 1.1 GB (英语)
元素加数164 (韩语)11.0 s, 1.3 GB (英语)1.9 s, 1.0 GB 键
gitea (网络)第23条6.5 s, 1.1 GB 键1.1 s, 0. 8 GB 键

映射程序本身最高峰为100–300 MB;其余为编译器. 单枪匹马的地图员 在一个核心(平均13个KB,每个SFC+1 ms)和尺度上,每秒变换约1 000个SFC 穿过核心.

如何运作

  • SFC 和模板解析数字 : 聊天室/声优-sfc-swc, (中文(简体) ), a 字节-同声的Rust端口 @vue/compiler-core 编号 : @vue/compiler-sfc 3.5.38 (英语).
  • 脚本分析数字 : 缩写 剖析 <script> 块和模板表达式; 行走者复制语言核心从 TypeScript 的 AST 读取的内容( 键入位置, 引导) 评论、具有约束力的名称及其范围).
  • 代码: 转写语言核心生成器(codegen/{script,template,style}(中文(简体) ) 写入带有相同特性解析的段缓冲器,将符号和注释合并 指令(@vue-ignore, (中文(简体) ), @vue-expect-error, (中文(简体) ), @vue-skip, (中文(简体) ), @vue-generic) (中文(简体) ).
  • 绘图:Volar映射,然后内容映射者横幅映射和诊断 指令,在UTF-16中按协议要求全部冲抵.
  • 议定书数字 : Content-Length- JSON-RPC在结构上initialize, (中文(简体) ), openProject, (中文(简体) ), closeProject, (中文(简体) ), transform);变换运行在线状池上.

发展

cargo test --release                     # unit tests + snapshots of the language-tools fixtures
UPDATE_FIXTURES=1 cargo test --release --test conformance    # rewrite the snapshots
cargo run --release --example bench -- files.txt 8
cargo run --release --example syntax_scan -- a.vue b.vue …   # SFCs whose virtual code does not parse
cargo run --release --example dump_one -- a.vue [needle]     # virtual code, or mappings around a needle

有效的 SFC 的虚拟代码必须解析: TypeScript 报告语法错误, 不论大小 地图员的指示,而单一则停止对整个程序的语义检查.

与任何一组编码的参考码进行对比 .vue 文件, 构建一次 (单位:千美元)tools/reference/build.sh,需要节点和网络),倾销其输出和diff:

node tools/reference/dump.cjs files.txt > ref.jsonl
cargo run --release --example conformance -- ref.jsonl --out /tmp/diffs

许可证

麻省理工学院. 由vuejs/语言工具(麻省理工学院, Johnson Chu);见 自由主义。 。 。 .

版本与发布记录

@chatium/vue-ts-mapper-rs 共发布 7 个版本,首次发布于 2026/10/04;过去 12 个月发布了 7 个版本。

版本发布日期距今
0.2.7latest2026/10/1426 天前
0.2.62026/10/1426 天前
0.2.52026/10/1128 天前
0.2.42026/10/081 个月前
0.2.32026/10/081 个月前
0.2.22026/10/061 个月前

关于 @chatium/vue-ts-mapper-rs 的常见问题

@chatium/vue-ts-mapper-rs 是什么?

Vue 单文件组件的 TypeScript 7 内容映射器, 用 Rust 写

如何安装 @chatium/vue-ts-mapper-rs?

在项目目录运行 npm install @chatium/vue-ts-mapper-rs,或使用 pnpm add / yarn add / bun add。它还提供命令行工具 vue-tsgo,可以用 npx vue-tsgo 直接运行。

@chatium/vue-ts-mapper-rs 支持 TypeScript 吗?

该包的 package.json 没有声明类型入口。需要类型提示时,可以在 npm 上查找社区维护的 @types/chatium__vue-ts-mapper-rs 是否存在。

@chatium/vue-ts-mapper-rs 需要什么版本的 Node.js?

package.json 的 engines 字段要求 Node.js >=18。版本不符时 npm 默认只给出警告,开启 engine-strict 后会拒绝安装。

@chatium/vue-ts-mapper-rs 可以商用吗?

@chatium/vue-ts-mapper-rs 使用 MIT 许可。宽松许可:允许商业使用、修改和再分发,通常只需在分发时保留原版权与许可声明。以上为概括,不构成法律意见,请以许可原文为准。

@chatium/vue-ts-mapper-rs 的下载量有多少?

根据 npm 官方下载统计,@chatium/vue-ts-mapper-rs 在 2026/10/10 – 2026/11/08 这 30 天内被下载 3,120 次,日均约 104 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入,适合横向比较热度,不能直接等同于使用人数。

@chatium/vue-ts-mapper-rs 还在维护吗?

最新版本 0.2.7 发布于 2026/10/14(26 天前);至今共发布 7 个版本,其中过去 12 个月发布了 7 个;首次发布于 2026/10/04。发布频率只是参考信号:功能稳定的工具可能很少需要更新,建议结合源码仓库的 issue 和提交记录判断。