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

时间:2016-10-18 23:48:55

标签: typescript compilation symlink 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

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

首先,"rootDir": "."tsc投诉:

  

错误TS6059:文件' [...] / target / tsModels / AboutWindupModel.ts'不是在rootDir' ' [...] / SRC /主/ web应用&#39 ;. ' ROOTDIR'预计包含所有源文件。

所以我试过

{
  "compilerOptions": {  ...,
    //"rootDir": ".",
    "rootDirs": [".", "../../../target/tsModels"],
  },
} 

还是一样。尝试:

{
  "compilerOptions": {
    //"rootDir": ".",
    "rootDirs": [".", "../../../target/tsModels"],
  },
  "exclude": [
    "node_modules",
    "target/**",
    "../../../target/**", 
    "../../../target/**/*",
    "../../../target/tsModels/*", 
    "typings/main",
    "typings/main.d.ts"
  ]
}

但仍然得到了这个错误。

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

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

  "compilerOptions": {
    //"rootDir": ".",
    "rootDirs": [".", "../../../target/tsModels"],
  },

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

    "rootDirs": "../../../target/tsModels",

但是tsc没有编译,而是编译了.。它完全服从吗?

如何从两个目录编译文件? 有没有办法在rootDir之外使用导致dir的符号链接?

我正在尝试的所有垃圾的完整配置:

{ "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" ] }

1 个答案:

答案 0 :(得分:0)

我认为preserveSymlinks编译器选项可以为您提供帮助:

  

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

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

示例:

{
    "compilerOptions": {
        "preserveSymlinks": true
    }
}