Библиотека Angular 6 - трудности с символической ссылкой на новый проект

У меня есть библиотека Angular 6, из которой я пытаюсь экспортировать отдельные компоненты. Очень похоже на Google Material Design.

Я следовал этому руководству: https://blog.angularindepth.com/creating-a-library-in-angular-6-87799552e7e5 и следовал следующим рекомендациям: https://github.com/angular/angular-cli/wiki/stories-create-library

Когда я пытаюсь импортировать библиотеку в новый проект (созданный angular cli), я сталкиваюсь с ошибками.

библиотеки package.json: { "name": "sample-library", "version": "0.0.1", "peerDependencies": { "@angular/common": "^6.0.0-rc.0 || ^6.0.0", "@angular/core": "^6.0.0-rc.0 || ^6.0.0", "sass-flex-grid": "1.0.4", "rxjs": "6.2.2", "ng-inline-svg": "8.0.1" }, "dependencies": { } }

оба проекта верхнего уровня package.json "@angular/animations": "6.0.3", "@angular/common": "6.1.4", "@angular/compiler": "6.1.4", "@angular/core": "6.1.4", "@angular/cli": "6.1.5"

Я использую npm link для импорта своей библиотеки в другой проект.

После некоторого поиска в Google это начало ощущаться как проблема с символической ссылкой, поэтому я добавил "preserveSymlinks": true, в свой файл angular.json моего нового проекта, в который я импортирую библиотеку. Это создает новую группу ошибок:

ERROR in ./node_modules/imported-library/fesm5/imported-library.js
Module not found: Error: Can't resolve 'ng-inline-svg' in 
'/Users/mp945gl/Projects/new/new/node_modules/imported-library/fesm5'

ERROR in ./node_modules/imported-library/fesm5/imported-library.js
Module not found: Error: Can't resolve 
'rxjs/add/observable/combineLatest' in 
'/Users/mp945gl/Projects/new/new/node_modules/imported-library/fesm5'

ERROR in ./node_modules/imported-library/fesm5/imported-library.js
Module not found: Error: Can't resolve 'rxjs/add/observable/of' in 
'/Users/mp945gl/Projects/new/new/node_modules/imported-library/fesm5'

ERROR in ./node_modules/corteva-component-library/fesm5/imported- 
library.js
Module not found: Error: Can't resolve 'rxjs/add/observable/zip' in 
'/Users/mp945gl/Projects/new/new/node_modules/imported-library/fesm5'

Похоже, что модуль неправильно экспортирует зависимости rxjs или inline-svg; Судя по устранению неполадок, это наиболее релевантные фрагменты файлов.

public_api.ts : 
export * from './lib/imported-library.service';
export * from './lib/imported-library.module';
export * from './lib/components/accordion/accordion.module';
export * from './lib/components/form-elements/checkbox/checkbox.module';

tsconfig.lib.json
"compilerOptions": {
  "baseUrl": "./",
  "outDir": "../out-tsc/lib",
  "target": "es5",
  "module": "es2015",
  "moduleResolution": "node",
  "declaration": true,
  "sourceMap": true,
  "inlineSources": true,
  "emitDecoratorMetadata": true,
  "experimentalDecorators": true,
  "importHelpers": true,
  "types": [],
  "lib": [
    "dom",
    "es2015"
],
"paths": {
  "@angular/*": [
    "../node_modules/@angular/*"
  ],
  "rxjs/*": ["../node_modules/rxjs/*"]
  }
}

Я действительно чувствую, что это связано с символической ссылкой. Любая помощь будет невероятно оценена. У меня нет идей.


person codeNameLily    schedule 10.09.2018    source источник
comment
У меня такая же проблема, вы нашли, как заставить ее работать? Я не могу обойтись без связывания пакетов. Я создаю рабочее пространство monoRepo с несколькими взаимосвязанными локальными библиотеками.   -  person Joe Walker    schedule 27.06.2019


Ответы (1)


Попробуйте добавить свойство «preserveSymlinks» со значением «true» в ваш «angular.json», как показано ниже.

"projects": {
  "<your app name>": {
    ...
    "projectType": "application",
    ...
    "architect": {
        "build": {
          "builder": "@angular-devkit/build-angular:browser",
              "options": {
                 ...
                 "preserveSymlinks": true,
                 ...
              },
              "configurations": {
                 "production": {
                    ...
                    "preserveSymlinks": true,
                    ...
                 }
person iamrakesh    schedule 02.11.2018
comment
Спасибо @iamrakesh, но я упомянул, что пробовал это, и это вызвало кучу других проблем. - person codeNameLily; 10.04.2019