tsconfig.json编译选项详解

{
/*
  tsconfig.json是ts编译器的配置文件,ts编译器可以根据它的信息来对代码进行编译
  "include" 用来指定哪些ts文件需要被编译
  路径:** 表示任意目录
        * 表示任意文件
  "exclude" 不需要被编译的文件目录
  默认值:["node_modules","bower_components","jspm_package"]
*/
  "include": [
    "./src/**/*"   //
  ],
//  "exclude": [
//    "./src/hello/**/*"
//  ],

/*
  "compilerOptions" 编译器的选项
*/
  "compilerOptions": {
    //target 用来指定ts被编译为的ES的版本
    // 'es3', 'es5', 'es6', 'es2015', 'es2016', 'es2017', 'es2018', 'es2019', 'es2020', 'esnext'
    "target": "es5",
    // module 指定要使用的模块化的规范
    // 'none', 'commonjs', 'amd', 'system', 'umd', 'es6', 'es2015', 'es2020', 'esnext'
    "module": "es2015",
    // lib用来指定项目中要使用的库
    //'es5', 'es6', 'es2015', 'es7', 'es2016', 'es2017', 'es
    //2018', 'es2019', 'es2020', 'esnext', 'dom', 'dom.iterable', 'webworker', 'webworker.importscripts', 'webworker.iterable', 'scri
    //pthost', 'es2015.core', 'es2015.collection', 'es2015.generator', 'es2015.iterable', 'es2015.promise', 'es2015.proxy', 'es2015.r
    //eflect', 'es2015.symbol', 'es2015.symbol.wellknown', 'es2016.array.include', 'es2017.object', 'es2017.sharedmemory', 'es2017.st
    //ring', 'es2017.intl', 'es2017.typedarrays', 'es2018.asyncgenerator', 'es2018.asynciterable', 'es2018.intl', 'es2018.promise', '
    //es2018.regexp', 'es2019.array', 'es2019.object', 'es2019.string', 'es2019.symbol', 'es2020.bigint', 'es2020.promise', 'es2020.s
    //haredmemory', 'es2020.string', 'es2020.symbol.wellknown', 'es2020.intl', 'esnext.array', 'esnext.symbol', 'esnext.asynciterable
    //', 'esnext.intl', 'esnext.bigint', 'esnext.string', 'esnext.promise', 'esnext.weakref'
    //    "lib": ["es6", "dom"]


    // outDir 用来指定编译后文件所在的目录
    "outDir": "./dist",

    // 将代码合并为一个文件
    // 设置outFile后,所有的全局作用域中的代码会合并到同一个文件中
    //"outFile": "./dist/app.js"

    // 是否对js文件进行编译,默认是false
    //    "allowJs": true,
    // 是否检查js代码是否符合语法规范,默认是false
    //    "checkJs": true,
    // 是否移除注释
    "removeComments": true,
    // 不生成编译后的文件
    "noEmit": false,


    // 当有错误时不生成编译后的文件
    "noEmitOnError": true,

    // 所有严格检查的总开关
    "strict": true,

    // 用来设置编译后的文件是否使用严格模式,默认false
    "alwaysStrict": true,

    // 不允许隐式的any类型
    "noImplicitAny": true,

    // 不允许不明确类型的this
    "noImplicitThis": true,

    // 严格的检查空值
    "strictNullChecks": true
  }
}
### tsconfig.json 文件详解 #### 作用概述 `tsconfig.json` 是 TypeScript编译配置文件,用于定义如何处理和转换源代码。该文件允许开发者自定义编译过程中的行为,从而更好地适应不同开发环境的需求[^1]。 #### 基本结构 此文件通常位于项目的根目录下,默认情况下包含了部分预设参数。当运行 `tsc` 或其他构建工具时会自动读取并应用其中设定的内容。如果未找到,则采用内置默认值进行编译操作[^2]。 #### 主要配置项 ##### compilerOptions 这是最重要的字段之一,用来控制具体的编译选项: - **target**: 设置目标 ECMAScript 版本(如 ES3, ES5, ES6/ES2015 等),影响最终输出 JavaScript 的语法特性; - **module**: 定义模块系统的类型(CommonJS、AMD、UMD 等),决定了导入导出语句的行为方式; - **strict**: 启用严格模式检查集合,有助于提高代码质量,减少潜在错误的发生概率; - **outDir**: 指定编译后的文件存放路径,方便管理和部署工作流; - **rootDir**: 设定输入文件所在的最顶层目录位置,帮助组织大型项目结构; - **esModuleInterop**: 改善 CommonJS 和 ES Module 之间的互操作性支持,使得两者可以更顺畅地协同工作; 以上仅列举了一部分内容,在实际使用过程中可根据具体需求调整更多细节设置[^4]。 ```json { "compilerOptions": { "target": "es5", "module": "commonjs", "strict": true, "outDir": "./dist", "rootDir": "./src" } } ``` ##### include/exclude/files 这三个属性用于指定哪些文件应该被包含在编译范围内: - **include**: 明确指出应参与编译的一组文件或文件夹列表; - **exclude**: 排除某些特定的文件不参加编译流程; - **files**: 列举确切需要加入到编译范围内的单个文件名。 一般推荐优先考虑利用 `include` 来划定边界,再配合 `exclude` 细调例外情况即可满足大多数场景下的要求[^5]。 ```json { "include": ["./src/**/*.ts"], "exclude": ["node_modules", "**/*.spec.ts"] } ``` #### 复杂项目管理 - references 字段 对于由多个子模块构成的大规模应用程序而言,可以通过引入 `references` 属性来实现跨包间的依赖关系声明。这种方式不仅简化了多库协作的方式,还能够有效提升增量编译效率[^3]。 ```json { "references": [ { "path": "./packages/core/tsconfig.json" }, { "path": "./packages/utils/tsconfig.json" } ] } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值