返回介绍

四、配置 tsconfig.json

发布于 2024-09-07 18:09:18 字数 3951 浏览 0 评论 0 收藏 0

4.1 基础配置

{
  // ===与文件相关的选项===
  "files" : ['src/index.ts'], // 编译的文件列表
  "include": ['src'], // 指定编译文件
  "exclude": ['src/lib'], // 排除编译文件
  
  // ====与编译相关的选项====
  "compilerOptions": {
    // "incremental": true,        // 增量编译,再次编译会增量编译
    // "tsBuildInfoFile": "./buildFile",   // 增量编译文件的存储位置
    // "diagnostics": true,        // 打印诊断信息

    // "target": "es5",       // 目标语言的版本
    // "module": "commonjs",    // 生成代码的模块标准
    // "outFile": "./app.js",   // 将多个相互依赖的文件生成一个文件,可以用在 AMD 模块中
    
     // 比如你需要使用 es2019 方法 需要在这里导入模块 "lib": ['es2019.arrary']
    // "lib": [],         // TS 需要引用的库,即声明文件,es5 默认 "dom", "es5", "scripthost"

    // "allowJs": true,       // 允许编译 JS 文件(js、jsx)
    // "checkJs": true,       // 允许在 JS 文件中报错,通常与 allowJS 一起使用
    // "outDir": "./out",     // 指定输出目录
    // "rootDir": "./",       // 指定输入文件目录(用于输出)

    // "declaration": true,     // 生成声明文件
    // "declarationDir": "./d",   // 声明文件的路径
    // "emitDeclarationOnly": true, // 只生成声明文件
    // "sourceMap": true,       // 生成目标文件的 sourceMap
    // "inlineSourceMap": true,   // 生成目标文件的 inline sourceMap
    // "declarationMap": true,    // 生成声明文件的 sourceMap
    // "typeRoots": [],       // 声明文件目录,默认 node_modules/@types
    // "types": [],         // 声明文件包

    // "removeComments": true,  // 删除注释

    // "noEmit": true,      // 不输出文件
    // "noEmitOnError": true,   // 发生错误时不输出文件

    // "noEmitHelpers": true,   // 不生成 helper 函数,需额外安装 ts-helpers
    // "importHelpers": true,   // 通过 tslib 引入 helper 函数,文件必须是模块

    // "downlevelIteration": true,  // 降级遍历器的实现(es3/5)

    // "strict": true,            // 开启所有严格的类型检查
    // "alwaysStrict": false,         // 在代码中注入 "use strict";
    // "noImplicitAny": false,        // 不允许隐式的 any 类型
    // "strictNullChecks": false,       // 不允许把 null、undefined 赋值给其他类型变量
    // "strictFunctionTypes": false       // 不允许函数参数双向协变
    // "strictPropertyInitialization": false, // 类的实例属性必须初始化
    // "strictBindCallApply": false,      // 严格的 bind/call/apply 检查
    // "noImplicitThis": false,         // 不允许 this 有隐式的 any 类型

    // "noUnusedLocals": true,        // 检查只声明,未使用的局部变量
    // "noUnusedParameters": true,      // 检查未使用的函数参数
    // "noFallthroughCasesInSwitch": true,  // 防止 switch 语句贯穿
    // "noImplicitReturns": true,       // 每个分支都要有返回值

    // "esModuleInterop": true,         // 允许 export = 导出,由 import from 导入
    // "allowUmdGlobalAccess": true,      // 允许在模块中访问 UMD 全局变量
    // "moduleResolution": "node",      // 模块解析策略
    // "baseUrl": "./",             // 解析非相对模块的基地址
    // "paths": {               // 路径映射,相对于 baseUrl
    //   "jquery": ["node_modules/jquery/dist/jquery.slim.min.js"]
    // },
    // "rootDirs": ["src", "out"],      // 将多个目录放在一个虚拟目录下,用于运行时

    // "listEmittedFiles": true,    // 打印输出的文件
    // "listFiles": true,         // 打印编译的文件(包括引用的声明文件)
  }
}

也可以把公共的抽离出来

// tsconfig.base.json

{
  "files" : ['src/index.ts'], // 编译的文件列表
  "include": ['src'], // 指定编译文件
  "exclude": ['src/lib'], // 排除编译文件
}
"extends": './tsconfig.base',
"exclude": [] // 覆盖之前的

4.2 工程引用配置多个项目

每个项目都有一份独立的 tsconfig.json ,继承一份公共的配置,最后可单独构建每个子项目工程

参考学习 typescript 项目 https://github.com/microsoft/TypeScript/tree/master/src

// 示例 项目入口
{
  "compilerOptions": {
  "target": "es5",
  "module": "commonjs",
  "strict": true,
  "composite": true,
  "declaration": true
  }
}
// 子工程 1
// src/client/tsconfig.json
{
  "extends": "../../tsconfig.json", //继承基础配置
  "compilerOptions": {
    "outDir": "../../dist/client", // 输出文件
  },
  "references": [
    { "path": "../common" } // 依赖文件
  ]
}
// 子工程 2
// src/server/tsconfig.json

{
  "extends": "../../tsconfig.json",
  "compilerOptions": {
    "outDir": "../../dist/server",
  },
  "references": [
    { "path": "../common" }
  ]
}

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文