как правильно создать проект библиотеки с Angular CLI 7.0.0-RC2 - PullRequest
0 голосов
/ 11 октября 2018

:) Я установил @angular/cli@next глобально с помощью пряжи, чтобы создать проект angular7.

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

Я создал проект библиотеки с помощью команды ng new tuxin-libs --style=scss --experimental-ivy и набрал No при добавлении маршрутизации, поскольку это будет просто проект библиотеки.

, затем я ввел tuxin-libs и создалбиблиотека с ng generate library cars --prefix=tuxin и созданный компонент с именем car-type с ng generate component car-type --project=cars

Мне не нужен компонент основных автомобилей, поэтому я удалил файл cars.component.ts и cars.component.spec.ts и удалил export * from './lib/cars.component';с public_api.ts и добавил мой код.

теперь я использую @angular/material, apollo-angular и ngx-webstorage-service.и я действительно запутался в том, как добавить его в мой библиотечный проект

некоторые говорят, что добавить его в качестве зависимого узла.поэтому я ввел projects/cars и попытался установить эти библиотеки как равноправные зависимости с помощью следующих команд:

yarn add --peer @angular/material @angular/cdk @angular/animations
yarn add --peer apollo-angular   apollo-angular-link-http   apollo-link   apollo-client   apollo-cache-inmemory   graphql-tag   graphql
yarn add --peer ngx-webstorage-service

затем при попытке построить модуль cars, введя корневой каталог моего библиотечного проекта ивыполнить ng build cars Я получаю

BUILD ERROR
Cannot read property 'isSkipSelf' of null
TypeError: Cannot read property 'isSkipSelf' of null
    at ProviderElementContext._getDependency (/Users/ufkfir/projects/wd-proj/tuxin-libs/node_modules/@angular/compiler/bundles/compiler.umd.js:11504:22)
    at /Users/ufkfir/projects/wd-proj/tuxin-libs/node_modules/@angular/compiler/bundles/compiler.umd.js:11449:64
    at Array.map (<anonymous>)
    at /Users/ufkfir/projects/wd-proj/tuxin-libs/node_modules/@angular/compiler/bundles/compiler.umd.js:11449:30
    at Array.map (<anonymous>)
    at ProviderElementContext._getOrCreateLocalProvider (/Users/ufkfir/projects/wd-proj/tuxin-libs/node_modules/@angular/compiler/bundles/compiler.umd.js:11427:67)
    at /Users/ufkfir/projects/wd-proj/tuxin-libs/node_modules/@angular/compiler/bundles/compiler.umd.js:11325:27
    at Array.forEach (<anonymous>)
    at new ProviderElementContext (/Users/ufkfir/projects/wd-proj/tuxin-libs/node_modules/@angular/compiler/bundles/compiler.umd.js:11322:53)
    at TemplateParseVisitor.visitElement (/Users/ufkfir/projects/wd-proj/tuxin-libs/node_modules/@angular/compiler/bundles/compiler.umd.js:15093:35)

, когда я пытаюсь вместо этого добавить его как обычные зависимости, те же команды пряжи, что и раньше, без параметров --peer, а затем пытаюсь скомпилировать библиотеку cars, которую яget:

Building Angular Package
Building entry point 'cars'
Compiling TypeScript sources through ngc
Bundling to FESM2015
Bundling to FESM5
Bundling to UMD
No name was provided for external module 'graphql-tag' in output.globals – guessing 'gql'
No name was provided for external module 'apollo-angular' in output.globals – guessing 'i1'
No name was provided for external module 'ngx-webstorage-service' in output.globals – guessing 'ngxWebstorageService'
Minifying UMD bundle
Copying declaration files
Writing package metadata
Distributing npm packages with 'dependencies' is not recommended. Please consider adding @angular/animations to 'peerDependencies' or remove it from 'dependencies'.

BUILD ERROR
Dependency @angular/animations must be explicitly whitelisted.
Error: Dependency @angular/animations must be explicitly whitelisted.
    at Object.keys.forEach.dep (/Users/ufkfir/projects/wd-proj/tuxin-libs/node_modules/ng-packagr/lib/ng-v5/entry-point/write-package.transform.js:125:23)
    at Array.forEach (<anonymous>)
    at checkNonPeerDependencies (/Users/ufkfir/projects/wd-proj/tuxin-libs/node_modules/ng-packagr/lib/ng-v5/entry-point/write-package.transform.js:119:44)
    at /Users/ufkfir/projects/wd-proj/tuxin-libs/node_modules/ng-packagr/lib/ng-v5/entry-point/write-package.transform.js:93:13
    at Generator.next (<anonymous>)
    at /Users/ufkfir/projects/wd-proj/tuxin-libs/node_modules/ng-packagr/lib/ng-v5/entry-point/write-package.transform.js:7:71
    at new Promise (<anonymous>)
    at __awaiter (/Users/ufkfir/projects/wd-proj/tuxin-libs/node_modules/ng-packagr/lib/ng-v5/entry-point/write-package.transform.js:3:12)
    at writePackageJson (/Users/ufkfir/projects/wd-proj/tuxin-libs/node_modules/ng-packagr/lib/ng-v5/entry-point/write-package.transform.js:74:12)
    at Object.<anonymous> (/Users/ufkfir/projects/wd-proj/tuxin-libs/node_modules/ng-packagr/lib/ng-v5/entry-point/write-package.transform.js:41:11)

эта ошибка происходит точно так же, используя angular6 cli, а не последний angular7 ... но в любом случае ... сейчас я использую 7, поэтому я хочу, чтобы это было исправлено здесь:)

Я также пытался использовать ng add @angular/material --project=cars и ng add apollo-angular --project=cars, в обоих случаях я получаю Multiple projects are defined; please specify a project name, хотя я определил проект.

есть идеи?

любая информация по этому поводупроблема будет принята с благодарностью.

спасибо!

1 Ответ

0 голосов
/ 11 октября 2018

хорошо .. поэтому мне нужно было добавить соответствующие библиотеки как равноправные зависимости в package.json проекта cars и добавить его как обычные зависимости в основной проект библиотеки.

вот и все :)простой

...