本文主要介绍tsconfig.json的详细配置,用来编译这个项目的根文件和编译选项都是在tsconfig.json文件中指定的。边肖认为这很好。现在分享给大家,给大家一个参考。来和边肖一起看看吧。
概述
如果一个目录下有tsconfig.json文件,说明这个目录是TypeScript项目的根目录。tsconfig.json文件指定用于编译该项目的根文件和编译选项。项目可以通过以下方式之一进行编译:
使用tsconfig.json
在没有任何输入文件的情况下调用tsc时,编译器会从当前目录中搜索tsconfig.json文件,并逐步搜索父目录。
在没有任何输入文件的情况下调用tsc,并使用命令行参数- project(或-p)来指定包含tsconfig.json文件的目录。
当在命令行上指定输入文件时,tsconfig.json文件将被忽略。
示例
Tsconfig.json示例文件:
使用“文件”属性
{
编译器选项':{
模块':' commonjs ',
' noImplicitAny ':真,
' removeComments': true,
' preserveConstEnums ':真,
' sourceMap': true
},
文件':[
' core.ts ',
'系统',
'类型. ts ',
scanner.ts ',
parser.ts ',
utilities.ts ',
binder.ts ',
checker.ts ',
发射器. ts ',
'程序. ts ',
' commandLineParser.ts ',
tsc.ts ',
'诊断信息Map.generated.ts '
]
}
使用“include”和“exclude”属性。
{
编译器选项':{
模块':'系统',
' noImplicitAny ':真,
' removeComments': true,
' preserveConstEnums ':真,
输出文件': '././build/local/TSC . js ',
' sourceMap': true
},
包括':[
src/**/* '
],
排除':[
'节点模块',
**/* .规格ts '
]
}
细节
“CompilerOptions”可以忽略,那么编译器将使用默认值。点击这里查看编译器选项的完整列表。
“文件”指定包含相对或绝对文件路径的列表。“Include”和“exclude”属性指定文件全局匹配模式的列表。支持的全局通配符有:
*匹配0个或更多字符(不包括目录分隔符)
?匹配任意字符(不包括目录分隔符)
* */递归匹配任何子目录
如果glob模式的一部分只包含*或。*,则只包括支持的文件扩展名类型(如default。ts,tsx,还有。d.ts .还有。js和。如果allowJs设置为true,则为jsx)。
如果未指定“files”和“include ”,编译器将包含所有类型脚本文件(。ts,d.ts和。默认情况下,tsx)位于当前目录和子目录中,不包括“exclude”中指定的文件。JS文件(。js和。如果allowJs设置为true,也包括jsx)。如果指定了“files”或“include ”,编译器会将它们包含在一起。编译器将始终排除由“outDir”指定的目录中的文件,除非您显式使用“files”来包含它们(在这种情况下,使用exclude指定是没有用的)。
用“include”引入的文件可以用“exclude”属性过滤。但是,无论如何设置“排除”,由“文件”属性明确指定的文件将始终包括在内。除非另有说明,否则默认情况下,“排除”将排除node_modules、bower_components、jspm_packages和outDir目录。
由“files”或“include”指定的文件引用的任何文件也将包括在内。A.ts引用B.ts,因此B.ts不能被排除,除非引用它的A.ts在“排除”列表中。
请注意,编译器不会引入可能用作输出的文件;例如,假设我们包括index.ts,那么index.d.ts和index.js将被排除。一般来说,不建议仅通过扩展名的不同来区分同一目录下的文件。
Tsconfig.json文件可以是一个空文件,那么所有默认文件(如上所述)都将使用默认配置选项进行编译。
命令行上指定的编译选项会覆盖tsconfig.json文件中的相应选项。
@types,typeRoots和types
所有默认可见的“@types”包都将包含在编译过程中。node_modules/@types文件夹及其子文件夹下的所有包都是可见的;也就是,/node_modules/@types/,/node_modules/@types/和././node_modules/@types/等等。
如果指定了typeRoots,则只包括typeRoots下的包。例如:
{
编译器选项':{
typeroot“:[”。/typings']
}
}
这个配置文件将包含下的所有包。/typongs,但不是里面的包。/node _ modules/@类型。
如果指定了types,将只包含列出的包。例如:
{
编译器选项':{
类型':['node ',' lodash ',' express']
}
}
这个tsconfig.json文件将只包含。/node_modules/@types/node,/node_modules/@types/lodash和。/node_modules/@types/express。/@types/.node_modules/@types/*中的其他包就不介绍了。
指定“types”:[]以禁用@types包的自动引入。
请注意,只有在使用全局声明(与模块相反)时,自动引入才是重要的。如果使用import 'foo '语句,TypeScript仍将查找node_modules和node_modules/@types文件夹以获取foo包。
使用extends继承配置
Tsconfig.json文件可以通过使用extends属性从另一个配置文件继承配置。
Extends是tsconfig.json文件中的顶级属性(类似于compilerOptions、files、include和exclude)。extends的值是一个字符串,包含要继承的另一个文件的路径。
原始文件中的配置首先被加载,然后被继承文件中的配置重写。如果发现循环引用,将会报告错误。
继承的配置文件中的文件include和exclude会覆盖源配置文件的属性。
配置文件中的相对路径相对于解析时它所在的文件。
例如:
配置/base.json:
{
编译器选项':{
' noImplicitAny ':真,
' strictNullChecks': true
}
}
tsconfig.json:
{
扩展“:”。/configs/base ',
文件':[
' main.ts ',
补充. ts '
]
}
tsconfig.nostrictnull.json:
{
扩展“:”。/tsconfig ',
编译器选项':{
“strictNullChecks”:false
}
}
compileOnSave
在顶层设置compileOnSave标志允许IDE在保存文件时根据tsconfig.json重新生成文件。
{
' compileOnSave': true,
编译器选项':{
' noImplicitAny ':对
}
}
要支持此功能,您需要安装Visual Studio 2015、TypeScript1.8.4或更高版本以及atom-typescript插件。
这就是本文的全部内容。希望对大家的学习有帮助,支持我们。
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。