ng-packagr в пользовательской библиотеке Ionic 3 - PullRequest
0 голосов
/ 08 июля 2019


Мне нужно собрать набор библиотек для моего приложения Ionic, чтобы сократить время выхода на рынок и иметь общие фрагменты кода.Я нашел ng-packagr и пытаюсь выяснить, как заставить его работать с Ionic 3.9.5.

На этапе сборки (работает ng-packagr -p package.json) я получаю следующие ошибки

BUILD ERROR
node_modules\ionic-angular\components\picker\picker-component.d.ts.PickerCmp.html(13,71): : Expected 0 arguments, but got 1.
node_modules\ionic-angular\components\input\input.d.ts.TextInput.html(1,928): : Expected 0 arguments, but got 1.
node_modules\ionic-angular\components\input\input.d.ts.TextInput.html(1,961): : Expected 0 arguments, but got 1.

Error: node_modules\ionic-angular\components\picker\picker-component.d.ts.PickerCmp.html(13,71): : Expected 0 arguments, but got 1.
node_modules\ionic-angular\components\input\input.d.ts.TextInput.html(1,928): : Expected 0 arguments, but got 1.
node_modules\ionic-angular\components\input\input.d.ts.TextInput.html(1,961): : Expected 0 arguments, but got 1.

    at Object.<anonymous> (C:\app_repo\gw-ionic-task-app\task-module\node_modules\ng-packagr\lib\ngc\compile-source-files.js:53:68)
    at Generator.next (<anonymous>)
    at C:\app_repo\gw-ionic-task-app\task-module\node_modules\ng-packagr\lib\ngc\compile-source-files.js:7:71
    at new Promise (<anonymous>)
    at __awaiter (C:\app_repo\gw-ionic-task-app\task-module\node_modules\ng-packagr\lib\ngc\compile-source-files.js:3:12)
    at Object.compileSourceFiles (C:\app_repo\gw-ionic-task-app\task-module\node_modules\ng-packagr\lib\ngc\compile-source-files.js:19:12)
    at Object.<anonymous> (C:\app_repo\gw-ionic-task-app\task-module\node_modules\ng-packagr\lib\ng-v5\entry-point\ts\compile-ngc.transform.js:26:32)
    at Generator.next (<anonymous>)
    at C:\app_repo\gw-ionic-task-app\task-module\node_modules\ng-packagr\lib\ng-v5\entry-point\ts\compile-ngc.transform.js:7:71
    at new Promise (<anonymous>)

Кажется, что ionic-angular сломал сборку ng-packagr, но я не могу понять, как это исправить.

Это мой package.json

{
 "name": "ionic-task-module",
 "version": "0.0.1",
 "main": "./dist/bundles/ionic-task-module.umd.min.js",
 "module": "./dist/index.js",
 "typings": "./dist/index.d.ts",
 "scripts": {
   "packagr": "ng-packagr -p package.json",
   //other scripts....
 },
 "ngPackage": {
   "lib": {
     "entryFile": "public_api.ts",
   }
 },
 "devDependencies": {
   "cpx": "^1.5.0",
   "gulp": "^3.9.1",
   "gulp-inline-ng2-template": "^4.0.0",
   "ng-packagr": "^3.0.0",
   "node-sass": "^4.5.2",
   "renamer": "^0.6.1",
   "rimraf": "^2.6.2",
   "rollup": "^0.58.2",
   "typescript": ">=2.4.2 <2.5",
   "uglify-js": "^2.7.5"
 },
 "dependencies": {
   "@angular/animations": "^5.2.11",
   "@angular/cdk": "^5.2.5",
   "@angular/common": "5.2.11",
   "@angular/compiler": "5.2.11",
   "@angular/compiler-cli": "5.2.11",
   "@angular/core": "5.2.11",
   "@angular/forms": "5.2.11",
   "@angular/http": "5.2.11",
   "@angular/material": "^5.2.5",
   "@angular/platform-browser": "5.2.11",
   "@angular/platform-browser-dynamic": "5.2.11",
   "@ionic-native/core": "~4.20.0",
   "@ionic/storage": "2.2.0",
   "ionic-angular": "3.9.5",
   "ionicons": "3.0.0",
   "intl": "1.2.5",
   "moment": "^2.24.0",
   "ngx-countdown-timer": "^0.1.9",
   "lokijs": "1.5.6",
   "rxjs": "5.5.11",
   "sw-toolbox": "3.6.0",
   "zone.js": "0.8.29",
   "localforage": "1.7.2",
   "ol": "5.3.3"
 }
}

In public_api.ts Я просто экспортирую свой основной модуль.Это может быть связано с неправильной версией packagr?(v3.0.6 - последняя версия, совместимая с Angular 5.x)

Любая помощь будет принята:)

1 Ответ

0 голосов
/ 08 июля 2019

Разработка Angular Library - непростая задача.

Я бы порекомендовал вам использовать такой инструмент, как nrwl / nx: https://nx.dev/angular

Или, если он будет более кроссплатформеннымс angular это может быть довольно крутой помощник: https://nstudio.io/xplat/


Но вы можете сделать это и самостоятельно, но здесь я бы также порекомендовал вам изменить настройки вашего рабочего места.

  1. Создайте новый проект с ng new my-workplace --application=false
  2. Добавьте свою библиотеку ng add library my-lib
  3. Добавьте свои приложения ng add application my-app

Настройки CLI в этомЭто очень много для вас ... но если вы не хотите делать это вручную, вы также можете изменить ваш angular.json в соответствии с шаблоном cli.Для этого создайте фиктивное рабочее место, как показано выше, и измените его конфиги в соответствии с ним.

Для библиотеки Dev есть много вещей, которые нужно знать:

  1. Когда вы используете barell export /Импортируйте и используйте его только с my-folder/index. / index очень важен для ng-packager, иначе он не будет работать
  2. Экспортируйте каждый компонент, который вы хотите использовать, из внешнего в public_api.ts, для этого выМожно экспортировать их один за другим или, как в пункте 1, экспортировать пустыми данными, но имейте в виду, что нужно экспортировать их с помощью /index...
  3. Если вы хотите использовать также стили библиотеки, вам придется создавать их вручную с помощью build-scss и скопируйте его в папку dist
  4. во избежание ошибок циклической зависимости
...