tsc如何知道要编译的ts文件在哪里?

时间:2016-12-15 23:36:45

标签: angularjs angular typescript tsc

我正在尝试从官方文档中学习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的设置?是否有优化编译过程的设置?

2 个答案:

答案 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”数组,您将优化编译过程,因为您不需要搜索所有可用文件夹。但是,除非你有一个庞大的目录结构,否则差异将是名义上的。