У меня есть библиотека 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": {
}
}
пакет верхнего уровня обоих проектов.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/*"]
}
}
Я действительно чувствую, что это связано с символической ссылкой. Любая помощь будет невероятно оценена. У меня нет идей.