我在阅读Angular2参考文献时发现:tsconfig.json
。我想知道以下参数是什么意思?
{
"compilerOptions": {
"target": "es5",
"module": "system",
"moduleResolution": "node",
"sourceMap": true,
"emitDecoratorMetadata": true,
"experimentalDecorators": true,
"removeComments": false,
"noImplicitAny": false
},
"exclude": [
"node_modules"
]
}
tsconfig.json
文件对应于TypeScript编译器(tsc)的配置。
这些链接可以为您提供有关这些属性的详细信息:
- http://www.typescriptlang.org/docs/handbook/tsconfig-json.html
- http://json.schemastore.org/tsconfig
- https://angular.io/docs/ts/latest/guide/typescript-configuration.html##tsconfig
这里有一些提示:
- target:用于编译输出的语言
-
module:编译输出中使用的模块管理器。
system
代表SystemJS,commonjs
代表CommonJS -
模块解析:用于解析模块声明文件(
.d.ts
文件)的策略。对于node
方法,它们像模块(require('module-name')
)一样从node_modules
文件夹加载 - sourceMap:生成或不生成源映射文件,以便在浏览器中直接调试应用程序TypeScript文件
- emitDecoratorMetadata:为源中的装饰声明发出或不发出设计类型元数据
- 实验装饰器:启用或不启用对ES7装饰器的实验支持
- removeComments:是否删除评论
- noImplicitAny:允许或不允许使用没有类型的变量/参数(隐式)
tsconfig.json
表示保存它的目录是TypeScript项目的根目录。tsconfig.json
文件指定编译项目所需的根文件和编译器选项。
编译器应按照上述配置执行:
"target":"es5">=>将编译es6到es5,使其成为兼容的浏览器。
"module":"system">=>指定模块代码生成(commonjs'、'amd'、'system'、'umd'、'es6'等)
"模块解析":"节点">=>确定模块如何解析
"sourceMap":true=>生成相应的".map"文件,以便在生产代码中使用该文件进行调试。
"removeComments":false=>删除除以/*开头的复制右侧标题注释外的所有注释!
"noImplicitAny":false=>在具有隐含"any"类型的表达式和声明上引发错误。
如果指定了"exclude"属性,则编译器将包含包含目录和子目录中的所有TypeScript(*.ts或*.tsx)文件,但被排除的文件或文件夹除外。
已经有很多答案了,但我想再补充一点,说明为什么需要tsconfig。根据角度文件
TypeScript是Angular应用程序开发的主要语言。它是JavaScript的超集,在设计时支持类型安全和工具。
浏览器无法直接执行TypeScript。Typescript必须是使用tsc编译器"transpiled"到JavaScript,这需要一些配置。
通常,您会在项目中添加一个名为tsconfig.json的TypeScript配置文件,以指导编译器生成JavaScript文件。
有关详细信息https://angular.io/guide/typescript-configuration
tsconfig文件将该项目指示为typescript项目,它包括如何编译typescript文件的选项。有关详细信息,请查看网站https://www.typescriptlang.org/docs/handbook/tsconfig-json.html
以上介绍了大部分要点。有些遗漏了,我想强调一下。
tsconfig.json将告诉哪里是构建代码以及目标版本。
例如,当它进入生产时,它将引用tsconfig.json中的以下键并选择构建。
"outDir": "./dist/out-tsc", --> where to locate the build file.
我们的浏览器不理解typescript,所以请说明要转换哪种类型的js,浏览器会理解我们的代码。
换句话说,我们用typescript编写代码,但将代码带到es5,我们使用下面的字段来完成。
"target": "es2015",
正如您所知,浏览器只能接受javascript文件,但当您使用angular时,就不会使用javascript。而是使用typescript文件。。因此,现在我们需要一种方法来将这些typescript文件更改为js文件。它是由tsconfig.json
文件完成的,该文件指定了进行此更改所需的配置选项。例如编译器选项和根文件。