angular 2 - PrimeNg teamcity/visual Studio 编译失败(排除 node_modules)

angular 2 - PrimeNg teamcity/visual Studio compilation failing (exclude node_modules)

嗨,我正在使用 PrimeNg 数据表,它似乎无法在 teamcity 上构建。下面是错误

(CompileTypeScriptWithTSConfig target) -> node_modules\primeng\components\datatable\datatable.d.ts(180,14): error TS1005: Build: '=' expected. node_modules\primeng\components\datatable\datatable.d.ts(180,25): error TS1005: Build: ';' expected.

知道为什么 Visual Studio 编译失败。 Typings 似乎有一些问题,我需要在此文件中手动修复它吗?

这些行之前的一些行是

PreComputeCompileTypeScriptWithTSConfig:

[13:34:52][Step 1/1] C:\Program Files (x86)\Microsoft SDKs\TypeScript.8\tsc.exe --project "E:\buildagent\workbe75659b1819119\src\MyProject.Client\e2e\tsconfig.json"

[13:34:52][Step 1/1] C:\Program Files (x86)\Microsoft SDKs\TypeScript.8\tsc.exe --project "E:\buildagent\workbe75659b1819119\src\MyProject.Client\src\tsconfig.json"

[13:34:52][Step 1/1] CompileTypeScriptWithTSConfig: [13:34:52][Step 1/1] C:\Program Files (x86)\Microsoft SDKs\TypeScript.8\tsc.exe --project "E:\buildagent\workbe75659b1819119\src\MyProject.Client\e2e\tsconfig.json"

[13:34:54][Step 1/1] C:\Program Files (x86)\Microsoft SDKs\TypeScript.8\tsc.exe --project "E:\buildagent\workbe75659b1819119\src\MyProject.Client\src\tsconfig.json"

我的 tsconfig 在下面

{
  "compileOnSave": false,
  "compilerOptions": {
    "declaration": false,
    "emitDecoratorMetadata": true,
    "experimentalDecorators": true,
    "mapRoot": "/",
    "module": "commonjs",
    "moduleResolution": "node",
    "noEmitOnError": true,
    "noImplicitAny": false,
    "outDir": "../dist/",
    "rootDir": ".",
    "sourceMap": true,
    "target": "es5",
    "inlineSources": true
  },

  "files": [
    "main.ts",
    "typings.d.ts"
  ],
  "exclude": [
    "../node_modules/*",
    "typings",
    "**/*-aot.ts"
  ]

}

为什么不忽略node_modules编译

我已经设法修复了它,似乎 Tyescript 1.8 有错误 node_modules。

我将 Typescript 升级到 2.1,并将下面的版本从 1.8 更改为 2.1

<TypeScriptToolsVersion>1.8</TypeScriptToolsVersion>

它似乎解决了问题并忽略了 node_modules 打字稿文件。我不确定如何告诉 VS 不要编译另一种解决方案的 Typescript 文件。

如果您想忽略 VS 的 TypeScript 自动编译,请将 tsconfig.json 重命名为 tsconfig.jsonx 之类的名称。然后在您的 gulp 脚本(或首选构建环境)中使用重命名的文件。

当您的 VS csproj 中有 tsconfig.json 时,请检查属性。您会发现 VS 会在 "TypeScript Build" 部分下自动检测到它。

在我的 gulp 脚本中,我使用新的 ts 配置文件作为:

var tsProject = ts.createProject('tsconfig.jsonx');

// compile ts files and put it in dist
gulp.task('compile', ['clean'], function () {
    return tsProject.src()
        .pipe(tsProject())
        .js.pipe(gulp.dest("dist/app"));
});

有点 hack,但如果需要的话,这是一种避免 MS Build 的方法