Как импортировать РЕПО с TypeScript неоткомпилированные в угловой 5+ (и исключить.спекуляция.файлы TS )

недавнее обновление до Angular 5.x не позволяет импортировать несжатый TypeScript из node_modules РЕПО. Похоже, обходной путь должен включать .ts файлы с помощью tsconfig.json via "include": ["node_modules/example/**/*.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

я понимаю, что uncompiled TS не будет импортировать, как раньше, потому что нет контроля над которым компилятор используется для библиотеки. Однако это не имеет для нас никакого значения, потому что это во внутреннем РЕПО, где мы имеем контроль над этим. Таким образом, импорт несжатых TS экономит нам шаг (и потенциал непреднамеренно пропустить этот шаг).

проблема в том, что мы не уверены, как включить .ts файлы и исключить .spec.ts файлы.

на tsconfig.json у нас есть:

  "include": ["node_modules/example/**/*.ts"],
  "exclude": ["node_modules/example/**/*.spec.ts"],

это не работает. .спекуляция.TS файлы по-прежнему включен как, как я понимаю, первый include правило "побеждает" над вторым exclude правило.

как мы можем импортировать .ts файлы и исключить .spec.ts файлов?

вот мой вопрос сегодня: как исключить файлы с расширением.спекуляция.ts ' в tsconfig.в JSON Вот нить об этой проблеме:https://github.com/angular/angular-cli/issues/8284

1 ответов


откройте tsconfig.json, и перейдите к этому

{
  ...
  "compilerOptions": {
   ...
  },      
  "include": [
    "./src",
    "node_modules/example"
  ],
  "exclude" : ...
}