如果一個(gè)目錄下存在一個(gè)tsconfig.json
文件,那么它意味著這個(gè)目錄是TypeScript項(xiàng)目的根目錄。tsconfig.json
文件中指定了用來編譯這個(gè)項(xiàng)目的根文件和編譯選項(xiàng)。 一個(gè)項(xiàng)目可以通過以下方式之一來編譯:
tsc
,編譯器會(huì)從當(dāng)前目錄開始去查找tsconfig.json
文件,逐級向上搜索父目錄。tsc
,且使用命令行參數(shù)--project
(或-p
)指定一個(gè)包含tsconfig.json
文件的目錄。當(dāng)命令行上指定了輸入文件時(shí),tsconfig.json
文件會(huì)被忽略。
tsconfig.json
示例文件:
"files"
屬性{
"compilerOptions": {
"module": "commonjs",
"noImplicitAny": true,
"removeComments": true,
"preserveConstEnums": true,
"outFile": "../../built/local/tsc.js",
"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"
]
}
使用"include"
和"exclude"
屬性
{
"compilerOptions": {
"module": "commonjs",
"noImplicitAny": true,
"removeComments": true,
"preserveConstEnums": true,
"outFile": "../../built/local/tsc.js",
"sourceMap": true
},
"include": [
"src/**/*"
],
"exclude": [
"node_modules",
"**/*.spec.ts"
]
}
"compilerOptions"
可以被忽略,這時(shí)編譯器會(huì)使用默認(rèn)值。在這里查看完整的[編譯器選項(xiàng)](./Compiler Options.md)列表。
"files"
指定一個(gè)包含相對或絕對文件路徑的列表。 "include"
和"exclude"
屬性指定一個(gè)文件glob匹配模式列表。 支持的glob通配符有:
*
匹配0或多個(gè)字符(不包括目錄分隔符)?
匹配一個(gè)任意字符(不包括目錄分隔符)**/
遞歸匹配任意子目錄如果一個(gè)glob模式里的某部分只包含*
或.*
,那么僅有支持的文件擴(kuò)展名類型被包含在內(nèi)(比如默認(rèn).ts
,.tsx
,和.d.ts
, 如果allowJs
設(shè)置能true
還包含.js
和.jsx
)。
如果"files"
和"include"
都沒有被指定,編譯器默認(rèn)包含當(dāng)前目錄和子目錄下所有的TypeScript文件(.ts
,.d.ts
和 .tsx
),排除在"exclude"
里指定的文件。JS文件(.js
和.jsx
)也被包含進(jìn)來如果allowJs
被設(shè)置成true
。
如果指定了 "files"
或"include"
,編譯器會(huì)將它們結(jié)合一并包含進(jìn)來。 使用 "outDir"
指定的目錄下的文件永遠(yuǎn)會(huì)被編譯器排除,除非你明確地使用"files"
將其包含進(jìn)來(這時(shí)就算用exclude
指定也沒用)。
使用"include"
引入的文件可以使用"exclude"
屬性過濾。 然而,通過 "files"
屬性明確指定的文件卻總是會(huì)被包含在內(nèi),不管"exclude"
如何設(shè)置。 如果沒有特殊指定, "exclude"
默認(rèn)情況下會(huì)排除node_modules
,bower_components
,和jspm_packages
目錄。
任何被"files"或
"include"指定的文件所引用的文件也會(huì)被包含進(jìn)來。
A.ts引用了
B.ts,因此
B.ts不能被排除,除非引用它的
A.ts在
"exclude"`列表中。
tsconfig.json
文件可以是個(gè)空文件,那么所有默認(rèn)的文件(如上面所述)都會(huì)以默認(rèn)配置選項(xiàng)編譯。
在命令行上指定的編譯選項(xiàng)會(huì)覆蓋在tsconfig.json
文件里的相應(yīng)選項(xiàng)。
compileOnSave
在最頂層設(shè)置compileOnSave
標(biāo)記,可以讓IDE在保存文件的時(shí)候根據(jù)tsconfig.json
重新生成文件。
{
"compileOnSave": true,
"compilerOptions": {
"noImplicitAny" : true
}
}
要想支持這個(gè)特性需要Visual Studio 2015, TypeScript1.8.4以上并且安裝atom-typescript插件。
到這里查看模式: http://json.schemastore.org/tsconfig.
更多建議: