我正在尝试从官方文档中学习angularjs v2。
https://angular.io/docs/ts/latest/tutorial/toh-pt1.html
https://github.com/angular/quickstart
按照上面链接中的教程,我注意到在运行npm start
之后,软件能够检测ts脚本中的更改并立即编译为js。太棒了!
我试图找出使这成为可能的代码。
来自package.json
,
"scripts": {
"start": "tsc && concurrently \"tsc -w\" \"lite-server\" ",
我猜测tsc
负责编译。令我困惑的是,tsc如何知道要编译的ts文件在哪里?我在哪里可以配置tsc
的设置?是否有优化编译过程的设置?
答案 0 :(得分:3)
tsconfig.json
使用的地方通常有一个TypeScript
。
内容具有为此目的所需的配置:
{
"compilerOptions": {
"target": "es5",
"module": "commonjs",
"moduleResolution": "node",
"sourceMap": true,
"emitDecoratorMetadata": true,
"experimentalDecorators": true,
"lib": ["es2015", "dom"],
"noImplicitAny": true,
"suppressImplicitAnyIndexErrors": true,
"typeRoots": [
"../../node_modules/@types/"
]
},
"compileOnSave": true,
"exclude": [
"node_modules/*",
"**/*-aot.ts"
]
}
现在您可以使用files
这样的选项:
"files": [
"core.ts",
"sys.ts",
"types.ts",
"scanner.ts"
]
或者您可以使用include
来包含路径:
"include": [
"src/**/*"
],
答案 1 :(得分:2)
当您在没有任何参数的情况下调用tsc时。它只是假设您要从当前目录向下编译所有打字稿文件。它使用从中调用命令的目录来开始搜索。 (没有什么特别的,任何可执行文件都可以找到它的执行位置)然后它只是递归/**/*.ts搜索自身和所有子目录中的任何文件。
您可以创建 tsconfig.json
来指定选项。
显然,如果在配置中指定“files”数组,您将优化编译过程,因为您不需要搜索所有可用文件夹。但是,除非你有一个庞大的目录结构,否则差异将是名义上的。