返回
创建于
状态公开

在 Vue 项目中使用 vue-tsc -b / --build 的最佳实践

在 Vue 3 + TypeScript 的项目中,我们通常会用到 vue-tsc 来进行类型检查。它是由 Volar 提供的命令行工具,类似于 TypeScript 官方的 tsc,但额外支持 .vue 文件。

而当你在命令里加上 -b--build 时,就进入了 Project References 构建模式,这是在多包/大型项目里非常有用的功能。


-b--build 的关系

先说结论:-b--build 完全等价

  • --build 是完整写法
  • -b 是简写(alias)
  • 功能完全一致,你写哪个都可以

vue-tsc -b 能做什么?

1. 支持 Project References

如果你有一个 monorepo 或者多包项目,例如:

js
1packages/
2  ├─ core/
3  ├─ ui/
4  └─ app/

每个子包都有自己的 tsconfig.json,顶层则有一个 tsconfig.build.json 统一管理依赖关系。 这时 vue-tsc -b 可以按照依赖顺序逐个编译子项目。

2. 增量构建

-b 会生成 .tsbuildinfo 文件,缓存构建信息。 后续编译时只会检查改动过的部分,速度更快。

3. 严格的类型检查

在 CI/CD 中,你可能不需要产物,只要检查类型是否通过。 这时可以用:

bash
1vue-tsc -b --noEmit

这样不会输出 .js.d.ts 文件,但能保证类型安全。


常见用法

bash
1# 使用根目录的 tsconfig.json
2vue-tsc -b
3
4# 指定构建配置文件(常见于 tsconfig.build.json)
5vue-tsc -b tsconfig.build.json
6
7# 只做类型检查(CI 常用)
8vue-tsc -b --noEmit
9
10# 清理增量缓存
11vue-tsc -b --clean

注意事项

  1. -b/--build 模式需要在 tsconfig.json 里加上:

    json
    1{
    2  "compilerOptions": {
    3    "composite": true
    4  }
    5}

    否则无法使用。

  2. 如果你的项目是单包应用(没有多子项目),其实不必用 -b,直接执行:

    bash
    1vue-tsc --noEmit

    就能完成类型检查。


小结

  • vue-tsc -bvue-tsc --build 是一回事,前者只是后者的缩写。
  • 它们主要用在 monorepo / 多包项目,能够带来 依赖顺序编译 + 增量缓存 的好处。
  • 如果只是想在 CI 中做类型检查,推荐使用 vue-tsc -b --noEmit
  • 对于单体应用,直接用 vue-tsc --noEmit 就够了。

📌 一句话总结

如果你的 Vue 项目是多包/大型工程,强烈建议用 vue-tsc -b; 如果只是单项目,直接 vue-tsc --noEmit 就行。