从零搭建TypeScript工程

目录
如果你刚开始接触TypeScript,很容易停留在“写类型+tsc编译”的阶段。但在真实工程中,TypeScript从来不是一个“语言孤岛”,而是一整套工程体系。本文会带你从零搭建一个项目模板,覆盖完整工具链。
1. 初始化项目
1.1 创建项目
|
|
1.2 安装TypeScript
|
|
初始化配置:
|
|
1.3 推荐tsconfig配置
一个常用配置如下:
2. 标准项目结构
一个可维护的TypeScript项目,一定要从结构开始规范:
-
my-ts-project/
-
src/
- modules/
- utils/
- types/
- index.ts
- app.ts
-
src/
- tests/
- dist/
- package.json
- tsconfig.json
modules:业务模块utils:纯函数工具types:全局类型services:外部接口调用
3. 开发工具链
3.1 运行TypeScript(开发环境)
安装:
|
|
运行:
|
|
3.2 监听模式开发
|
|
4. 代码规范(ESLint + Prettier)
4.1 安装ESLint
|
|
推荐配置:
- TypeScript
- Node.js
- JSON
4.2 Prettier格式化工具
|
|
.prettierrc文件内容如下:
4.3 ESLint + Prettier协同
|
|
5. 测试
推荐使用Vitest。
|
|
示例测试:
tests/sum.test.ts
|
|
package.json
6. 构建工具
TypeScript不负责构建,需要外部工具。
方案1:tsc (基础方案)
|
|
缺点:
- 构建慢
- 不支持现代打包能力
方案2:esbuild (高性能)
|
|
特点:
- 极速构建
- 适合中大型项目
方案3:tsup
|
|
优点:
- 零配置
- 适合库开发
7. 调试(VSCode)
创建.vscode/launch.json:
8. 环境变量管理
安装dotenv:
|
|
使用:
|
|
9. Git工程规范
Husky (Git hooks)
|
|
commitlint (提交规范)
|
|
10. Monorepo工程化
当开始写多个项目时,比如:
- 后端API
- 前端Web
- 公共工具库
- 类型共享包
很快我们就会遇到一些问题:
- ❌ 代码无法复用
- ❌ 每个项目都要独立配置一套 TypeScript / ESLint / 构建工具
- ❌ 依赖管理混乱
于是Monorepo出现了。
10.1 什么是Monorepo?
Monorepo(单仓库多项目)指的是在一个 Git 仓库中管理多个项目(packages)。Vue.js就是一个典型的Monorepo。
结构通常如下:
-
repo/
-
apps/
- web/
- api/
-
packages/
- shared/
- utils/
- types/
-
apps/
- package.json
- pnmp-workspace.yaml
10.2 为什么用用Mongorepo?
✔ 优势
- 代码复用(shared 包)
- 类型统一(types 包)
- 依赖统一管理
- 版本一致性
- 更适合团队开发
❌ 不适合场景
- 只有一个小项目
- 没有复用需求
- 不准备长期维护
10.3 初始化Mongorepo
10.3.1 安装pnpm
|
|
10.3.2 初始化项目
|
|
10.3.3 创建workspace
pnpm-workspace.yaml
|
|
10.4 创建项目结构
-
repo/
-
apps/
- web/
- api/
-
packages/
- shared/
- utils/
- types/
-
apps/
- package.json
- pnmp-workspace.yaml
10.5 创建共享包(shared)
|
|
示例代码:
|
|
在app中使用:
|
|
10.6 配置 TypeScript Monorepo
根目录tsconfig.json:
每个包的tsconfig.json
10.7 使用Turborepo
安装
|
|
turbo.json
package.json
相关内容
- json-server源码剖析:快速构建REST API背后的原理
- Node.js 源码剖析:非阻塞世界的引擎密码
- 如何解决 Node.js 中的 EMFILE 错误
- launch-editor源码剖析:快速打开编辑器的实现原理
请作者喝杯咖啡!
支付宝
微信