ts-learnings/00_tsconfig-json.md
2019-04-01 09:48:34 +08:00

3.3 KiB
Raw Blame History

tsconfig.json

原文

概述

某个目录下存在文件tsconfig.json那么就表明该目录是某个TypeScript项目的根目录。tsconfig.json文件指定了有哪些根文件,以及需要哪些编译器选项来对该项目进行编译。项目是以以下方式之一进行编译的:

tsconfig.json**的运用

  • 通过不带有文件的方式调用 tsc命令,此时编译器从当前目录开始,进而沿父目录链往上搜索tsconfig.json文件by invoking tsc with no input files, in which case the compiler searches for the tsconfig.json file starting in the current directory and continuing up the parent directory chain

  • 通过不带有文件,但提供用于指定包含了tsconfig.json文件的目录路径,或指向某个包含了配置的有效的.json文件的--project(或仅-p)的命令行选项方式,来调用tsc命令。

    当有在命令行上指定了文件时,tsconfig.json文件就会被忽略。

示例

tsconfig.json的一些示例文件:

  • 使用files属性

    {
        "compilerOptions": {
            "module": "commonjs",
            "noImplicitAny": true,
            "removeComments": true,
            "preserveConstEnums": true,
            "sourceMap": true
        },
        "files": [
            "core.ts",
            "sys.ts",
            "types.ts",
            "scanner.ts",
            "parser.ts",
            "utilities.ts",
            "binder.ts",
            "checker.ts",
            "emitter.ts",
            "program.ts",
            "commandLineParser.ts",
            "tsc.ts",
            "diagnosticInformationMap.generated.ts"
        ]
    }
    
  • 使用includeexclude属性

    {
        "compilerOptions": {
            "module": "system",
            "noImplicitAny": true,
            "removeComments": true,
            "preserveConstEnums": true,
            "outFile": "../../built/local/tsc.js",
            "sourceMap": true
        },
        "include": [
            "src/**/*"
        ],
        "exclude": [
            "node_modules",
            "**/*.spec.ts"
        ]
    }
    

详解Details

属性compilerOptions是可以省略的,在省略了该属性时,编辑器将使用默认选项。请参考完整的编译器选项清单。

files属性取的是一个相对或绝对文件路径的清单。而includeexclude属性则取的是类似于glob的文件模式清单请参考 Glob_(programming), Wikipediaglob介绍。支持以下glob通配符

+ `*` 匹配零个或更多字符(不包含目录分隔符,`*` matches zero or more characters(excluding directory separators)

+ `?` 匹配任意的一个字符(不包含目录分隔符,`?` matches any one character(excluding directory separators)

+ `**/` 递归地匹配所有子目录(`**/` recursively matches any subdirectory

在某个glob模式片段中仅包含了 *.* 时,那么只有那些扩展被支持的文件才被包含进来(也就是.ts.tsx.d.ts,而在allowJs被设置为true的情况下,也包含.jx.jsx)。