package.json文件中的build命令

134 阅读2分钟

思考🤔:我在 apis 项目中执行 pnpm init 时,package.json 文件中的 "scripts": { "build": "tsc" } 让我好奇为什么这里的 build 使用的是 tsc。之前在其他项目中看到的 build 命令有很多不同的写法,因此想了解它们的区别。

package.jsonscripts 里,build 脚本的不同写法代表不同的构建行为。下面分别解释几种常见的 build 命令:


1️⃣ "build": "tsc"

👉 直接使用 TypeScript 编译器 (tsc) 进行构建。

适用场景

  • 纯 TypeScript 代码库(如 packages/apis),无需打包,只需将 .ts 文件编译为 .js.d.ts 类型声明文件。

执行方式

pnpm run build  # 运行 TypeScript 编译

执行结果

  • src/*.ts 被编译到 dist/*.js
  • 生成 .d.ts 类型文件(如果 tsconfig.json 里开启了 "declaration": true

2️⃣ "build": "tsc && vite build"

👉 先用 TypeScript (tsc) 编译,然后再用 Vite 进行打包。

适用场景

  • 用 Vite 构建前端项目(如 Vue/React)。
  • 需要 TypeScript 预编译后,再由 Vite 进行优化打包。

执行方式

pnpm run build  # 先运行 tsc,再运行 vite build

执行过程

  1. tsc 先编译 TypeScript 代码,检查类型,并输出 .js 文件。
  2. vite build 读取 vite.config.ts,执行 Vite 的打包流程,生成最终的前端静态资源(如 dist/ 目录)。

3️⃣ "build": "tsc --watch"

👉 以 监听模式 运行 TypeScript 编译,文件变更时自动重新编译。

适用场景

  • 在本地开发 API 或工具库时,实时编译 TypeScript 代码,避免手动执行 build

执行方式

pnpm run build  # 监听文件变化,自动重新编译

执行效果

  • 代码修改后,tsc 立即重新编译,方便调试。

4️⃣ "build": "vite build"

👉 直接使用 Vite 进行构建,适用于前端项目。

适用场景

  • 纯前端项目(Vue/React)。
  • TypeScript 已由 Vite 处理,无需 tsc 额外编译。

执行方式

pnpm run build  # 使用 Vite 进行构建

执行效果

  • 生成 dist/ 目录,包含打包后的静态资源。

💡 总结

build 方式适用场景作用
"tsc"纯 TypeScript 库仅编译 TS 代码,输出 .js.d.ts
"tsc && vite build"TS + Vite 前端项目先编译 TS,再用 Vite 进行构建
"tsc --watch"本地开发工具库监听 TS 代码变化,自动编译
"vite build"纯 Vite 前端项目直接使用 Vite 进行打包

如果你的 apis 只是一个 TypeScript API 库,建议使用:

"build": "tsc"

如果是前端 Vue/React 项目,建议:

"build": "tsc && vite build"

我的项目apis 包是一个 API 工具库,所有build: "tsc" 就足够了 🚀。