TypeScript 编译器:生成的源、根目录、排除和符号链接

Ond*_*žka 5 symlink compilation typescript tsc

我有一个 TypeScript 2.0.3 项目的设置:

src/main/webapp/tsconfig.json
src/main/webapp/app -- contains .ts files
src/main/webapp/app/tsModels -- a symlink to ../../../../target/tsModels
target/tsModels/   -- contains .ts files
Run Code Online (Sandbox Code Playgroud)

目标是target/tsModels编译.ts 文件。

首先,与"rootDir": "."tsc抱怨:

错误 TS6059:文件“[...]/target/tsModels/AboutWindupModel.ts”不在“rootDir”“[...]/src/main/webapp”下。'rootDir' 应包含所有源文件。

所以我试过了

{
  "compilerOptions": {  ...,
    //"rootDir": ".",
    "rootDirs": [".", "../../../target/tsModels"],
  },
} 
Run Code Online (Sandbox Code Playgroud)

还是一样。尝试:

{
  "compilerOptions": {
    //"rootDir": ".",
    "rootDirs": [".", "../../../target/tsModels"],
  },
  "exclude": [
    "node_modules",
    "target/**",
    "../../../target/**", 
    "../../../target/**/*",
    "../../../target/tsModels/*", 
    "typings/main",
    "typings/main.d.ts"
  ]
}
Run Code Online (Sandbox Code Playgroud)

但仍然得到那个错误。

所以似乎tsc不能正确处理符号链接,总是检查规范路径。

所以我想,好吧,让我们tsModels直接编译文件。所以我删除了符号链接并尝试:

  "compilerOptions": {
    //"rootDir": ".",
    "rootDirs": [".", "../../../target/tsModels"],
  },
Run Code Online (Sandbox Code Playgroud)

但这实际上并没有编译目录中的文件tsModels
我什至尝试过

    "rootDirs": "../../../target/tsModels",
Run Code Online (Sandbox Code Playgroud)

tsc没有编译它,而是编译了.. 它完全遵守吗?

我应该怎么做才能从两个目录编译文件?
有没有办法使用指向外部目录的符号链接rootDir

包含我尝试的所有垃圾的完整配置:

{ "compilerOptions": { "target": "es5", "module": "system", "moduleResolution": "node", "sourceMap": true, "emitDecoratorMetadata": true, "experimentalDecorators": true, "removeComments": false, "noImplicitAny": false, //"rootDir": ".", //"rootDirs": [".", "../../../target/tsModels"], "rootDirs": ["../../../target/tsModels"], //"rootDir": "../../../target/tsModels", "outDir": "../../../target/windup-web", "sourceRoot": "/windup-web/" }, "exclude": [ "node_modules", //"target/**", //"../../../target/**", //"../../../target/**/*", //"../../../target/tsModels/*", //"target/tsModels/**", "typings/main", "typings/main.d.ts" ] }

abc*_*cde 4

我认为preserveSymlinks编译器选项可以帮助你:

不要将符号链接解析为其真实路径;将符号链接文件视为真实文件。

https://www.typescriptlang.org/docs/handbook/compiler-options.html

例子:

{
    "compilerOptions": {
        "preserveSymlinks": true
    }
}
Run Code Online (Sandbox Code Playgroud)