vue3+ts+vite:详细、完整的 tsconfig.json 示例 / 常见配置项及其用途

一、 tsconfig.json 示例

复制代码
{
  "compilerOptions": {
    // 1. 编译目标与模块系统
    "target": "ES2020",                          // 指定编译后的 JavaScript 版本为 ES2020
    "module": "ESNext",                          // 指定模块系统为 ESNext(支持动态导入等)
    "moduleResolution": "node",                   // 模块解析策略为 Node.js 风格(兼容 npm 包)

    // 2. 严格类型检查
    "strict": true,                              // 启用所有严格类型检查选项
    "noImplicitAny": true,                      // 禁止隐式 any 类型(严格模式默认启用)
    "strictNullChecks": true,                   // 强制 null/undefined 检查,避免运行时错误
    "strictFunctionTypes": true,                 // 启用严格的函数类型检查
    "strictBindCallApply": true,                // 启用严格的 bind/call/apply 检查
    "strictPropertyInitialization": true,       // 启用严格的属性初始化检查(需配合类构造器)
    "noImplicitThis": true,                     // 禁止隐式的 this 类型(必须显式声明)
    "alwaysStrict": true,                        // 在生成的代码中启用严格模式

    // 3. 路径映射与根目录
    "baseUrl": "./",                             // 基础路径(相对于 tsconfig.json)
    "paths": {
      "@/*": ["src/*"],                         // 将 @/ 映射到 src/,简化 import 路径
      "@components/*": ["src/components/*"],    // 将 @components/ 映射到 src/components/
      "@utils/*": ["src/utils/*"]               // 将 @utils/ 映射到 src/utils/
    },
    "rootDir": "src",                            // 源码根目录(编译时从 src 开始)
    "outDir": "dist",                            // 输出目录(编译后的文件)

    // 4. 开发体验优化
    "sourceMap": true,                           // 生成 sourceMap 文件,便于调试
    "inlineSources": false,                       // 是否将源码嵌入到 sourceMap 中(默认 false)
    "incremental": true,                         // 启用增量编译,缓存提升速度
    "tsBuildInfoFile": "./.cache/tsbuildinfo",   // 增量编译信息存储文件

    // 5. JavaScript 兼容性
    "allowJs": true,                             // 允许编译 .js 文件(适用于渐进式迁移到 TypeScript)
    "checkJs": false,                            // 不检查 .js 文件(默认 false,可设为 true 启用)
    "maxNodeModuleJsDepth": 1,                   // 限制解析 node_modules 中 .js 文件的深度(默认 1)

    // 6. 库与类型声明
    "skipLibCheck": true,                        // 跳过第三方库的类型检查,提高编译速度
    "declaration": true,                         // 生成 .d.ts 声明文件,便于库发布
    "emitDeclarationOnly": false,                // 是否仅生成声明文件(不编译 JS,默认 false)
    "declarationMap": true,                      // 生成声明文件的 sourceMap,便于调试类型

    // 7. 其他实用选项
    "jsx": "react-jsx",                          // React 的 JSX 转换(Vite/Next.js 兼容)
    "esModuleInterop": true,                     // 解决 CommonJS 与 ES 模块的导入问题
    "forceConsistentCasingInFileNames": true,   // 强制文件名大小写一致(跨平台安全)
    "preserveSymlinks": false,                   // 是否保留符号链接(默认 false)
    "resolveJsonModule": true,                   // 允许导入 .json 文件
    "isolatedModules": false,                    // 是否将每个文件作为独立模块(默认 false,适用于 Babel 等)

    // 8. 实验性功能(谨慎使用)
    "experimentalDecorators": true,              // 启用实验性装饰器(需配合 @babel/plugin-proposal-decorators)
    "emitDecoratorMetadata": true,               // 启用装饰器元数据反射(需配合 experimentalDecorators)

    // 9. 类型导入与库设置
    "types": ["node", "jest"],                   // 自动导入的类型声明文件(如 node、jest)
    "typeRoots": ["./node_modules/@types", "./types"], // 类型声明文件的根目录
    "lib": ["ES2020", "DOM", "DOM.Iterable"]    // 编译时需要包含的库文件
  },

  // 10. 文件控制
  "include": [
    "src/**/*.ts",                              // 包含 src 下的所有 .ts 文件
    "src/**/*.tsx",                             // 包含 src 下的所有 .tsx 文件
    "src/**/*.d.ts"                             // 包含 src 下的所有 .d.ts 文件
  ],
  "exclude": [
    "node_modules",                             // 排除 node_modules 目录
    "dist",                                     // 排除 dist 目录
    "tests/**/*.spec.ts",                       // 排除测试文件
    "**/*.test.ts"                              // 排除所有 .test.ts 文件
  ],

  // 11. 高级场景(可选)
  // "files": ["src/index.ts"],                  // 指定白名单文件(不推荐,通常用 include)
  // "extends": "./base-config.json"             // 继承其他配置文件(Monorepo 常用)
  "references": []                               // 引用其他项目(适用于 Monorepo 中的项目引用)
}

二、配置项说明

1、编译目标与模块系统

指定编译后的 JavaScript 版本和模块系统,兼容现代浏览器和打包工具。

2、严格类型检查

启用严格类型检查,避免运行时错误,提高代码质量。

3、路径映射与根目录

简化导入路径,提高代码可读性。

4、开发体验优化

生成 sourceMap 和增量编译信息,提升调试和编译速度。

5、JavaScript 兼容性

支持渐进式迁移到 TypeScript,兼容现有 JavaScript 代码。

6、库与类型声明

生成类型声明文件,便于库发布和类型检查。

7、其他实用选项

解决 CommonJS 与 ES 模块的导入问题,强制文件名大小写一致等。

8、实验性功能

启用装饰器等实验性功能(需配合 Babel 等工具)。

9、类型导入与库设置

自动导入类型声明文件,指定编译时需要的库文件。

10、文件控制

精确控制包含和排除的文件,避免不必要的编译。

11、高级场景

支持 Monorepo 中的项目引用和配置继承。

12、适用场景

现代前端项目(React/Vue/Vite)。

需要严格类型检查和开发效率优化的场景。

大型项目或 Monorepo 结构。

通过以上配置,可以兼顾类型安全、开发体验和编译性能。

三、欢迎交流指正

相关推荐
Vic101019 小时前
Hutool 的完整 JSON 工具类示例
开发语言·json
电商数据girl16 小时前
如何利用API接口与网页爬虫协同进行电商平台商品数据采集?
大数据·开发语言·人工智能·python·django·json
拷斤锟21 小时前
使用Excel解析从OData API获取到的JSON数据
数据库·json·excel
有育哥无奔波2 天前
是采用示例模板,还是采用json的结构化数据,哪种方式会让llm的输出更加稳定?
json
小小李程序员2 天前
JSON.parse解析大整数踩坑
开发语言·javascript·json
西哥写代码3 天前
基于dcmtk的dicom工具 第九章 以json文件或sqlite为数据源的worklist服务(附工程源码)
sqlite·json·mfc·dcmtk·worklist
Mu.3874 天前
JSON解析
json
我今晚不熬夜4 天前
JSON在java中的使用
java·开发语言·json
妮妮喔妮5 天前
重构vite.config.json
javascript·重构·json
患得患失9495 天前
【前端】【vscode】【.vscode/settings.json】为单个项目配置自动格式化和开发环境
前端·vscode·json