如何在 Angular 5+ 中使用未编译的 TypeScript 导入 repo(并排除 .spec.ts 文件)
How to import repo with uncompiled TypeScript in Angular 5+ (and exclude .spec.ts files)
最近升级到 Angular 5.x 不允许从 node_modules
存储库导入未编译的 TypeScript。看起来解决方法是通过 "include": ["node_modules/example/**/*.ts"]
使用 tsconfig.json
包含 .ts
文件;但是,这包括导致错误的 .spec.ts
个文件。
回溯一下,如果你的回购是未编译的,你会得到一个看起来像这样的错误:
ERROR in ./node_modules/example/lib/core/example.ts
Module build failed: Error: /Users/example/Work/example/example/node_modules/example/lib/core/example.ts is missing from the TypeScript compilation. Please make sure it is in your tsconfig via the 'files' or 'include' property.
The missing file seems to be part of a third party library. TS files in published libraries are often a sign of a badly packaged library. Please open an issue in the library repository to alert its author and ask them to package the library using the Angular Package Format (goo.gl/jB3GVv).
at AngularCompilerPlugin.getCompiledFile (/Users/example/Work/example/example/node_modules/@angular/cli/node_modules/@ngtools/webpack/src/angular_compiler_plugin.js:656:23)
at plugin.done.then (/Users/example/Work/example/example/node_modules/@angular/cli/node_modules/@ngtools/webpack/src/loader.js:467:39)
at <anonymous>
at process._tickCallback (internal/process/next_tick.js:188:7)
@ ./lib/visualization/visualization-widget/visualization-widget/visualization-widget.component.ts 25:24-79
@ ./lib/visualization/visualization-widget/visualization-widget.module.ts
@ ./lib/visualization/visualization.module.ts
@ ./lib/example.module.ts
@ ./src/demo-app/app.module.ts
@ ./src/main.ts
@ multi webpack-dev-server/client?http://0.0.0.0:0 ./src/main.ts
我知道未编译的 TS 不会像以前那样导入,因为无法控制将哪个编译器用于库。然而,这对我们来说无关紧要,因为它在我们 do 可以控制的内部仓库中。因此导入未编译的 TS 为我们节省了一个步骤(并且有可能无意中省略了这一步)。
问题是我们不确定如何包含 .ts
个文件 和排除 .spec.ts
个文件。
在tsconfig.json
中我们有:
"include": ["node_modules/example/**/*.ts"],
"exclude": ["node_modules/example/**/*.spec.ts"],
这不起作用。 .spec.ts 文件仍包含在内,据我所知,第一个 include
规则 'wins' 超过第二个 exclude
规则。
我们如何导入 .ts
个文件并排除 .spec.ts
个文件?
这是我今天早些时候的问题:
这是关于此问题的讨论帖:https://github.com/angular/angular-cli/issues/8284
打开你的tsconfig.json,然后改成这个
{
...
"compilerOptions": {
...
},
"include": [
"./src",
"node_modules/example"
],
"exclude" : ...
}
最近升级到 Angular 5.x 不允许从 node_modules
存储库导入未编译的 TypeScript。看起来解决方法是通过 "include": ["node_modules/example/**/*.ts"]
使用 tsconfig.json
包含 .ts
文件;但是,这包括导致错误的 .spec.ts
个文件。
回溯一下,如果你的回购是未编译的,你会得到一个看起来像这样的错误:
ERROR in ./node_modules/example/lib/core/example.ts
Module build failed: Error: /Users/example/Work/example/example/node_modules/example/lib/core/example.ts is missing from the TypeScript compilation. Please make sure it is in your tsconfig via the 'files' or 'include' property.
The missing file seems to be part of a third party library. TS files in published libraries are often a sign of a badly packaged library. Please open an issue in the library repository to alert its author and ask them to package the library using the Angular Package Format (goo.gl/jB3GVv).
at AngularCompilerPlugin.getCompiledFile (/Users/example/Work/example/example/node_modules/@angular/cli/node_modules/@ngtools/webpack/src/angular_compiler_plugin.js:656:23)
at plugin.done.then (/Users/example/Work/example/example/node_modules/@angular/cli/node_modules/@ngtools/webpack/src/loader.js:467:39)
at <anonymous>
at process._tickCallback (internal/process/next_tick.js:188:7)
@ ./lib/visualization/visualization-widget/visualization-widget/visualization-widget.component.ts 25:24-79
@ ./lib/visualization/visualization-widget/visualization-widget.module.ts
@ ./lib/visualization/visualization.module.ts
@ ./lib/example.module.ts
@ ./src/demo-app/app.module.ts
@ ./src/main.ts
@ multi webpack-dev-server/client?http://0.0.0.0:0 ./src/main.ts
我知道未编译的 TS 不会像以前那样导入,因为无法控制将哪个编译器用于库。然而,这对我们来说无关紧要,因为它在我们 do 可以控制的内部仓库中。因此导入未编译的 TS 为我们节省了一个步骤(并且有可能无意中省略了这一步)。
问题是我们不确定如何包含 .ts
个文件 和排除 .spec.ts
个文件。
在tsconfig.json
中我们有:
"include": ["node_modules/example/**/*.ts"],
"exclude": ["node_modules/example/**/*.spec.ts"],
这不起作用。 .spec.ts 文件仍包含在内,据我所知,第一个 include
规则 'wins' 超过第二个 exclude
规则。
我们如何导入 .ts
个文件并排除 .spec.ts
个文件?
这是我今天早些时候的问题:
打开你的tsconfig.json,然后改成这个
{
...
"compilerOptions": {
...
},
"include": [
"./src",
"node_modules/example"
],
"exclude" : ...
}