Библиотека Angular 6: библиотека сборки ng в конвейере CI для создания выпуска lib

Я пытаюсь создать библиотеку Angular 6 для интеграции CI, не интегрируя ее в приложение Angular. (по многим причинам)

Что я сделал до сих пор:

  • создайте package.json, чтобы установить все зависимости библиотеки
  • создать angular.json как обычное приложение angular6, ссылающееся на файлы ci (см. ниже)
  • скопируйте все ng-packages.\*.json в ng-package.ci.\*.json и обновите их пути, чтобы они ссылались на нужные файлы и каталоги (node_modules, entryfiles и т. д.)
  • продублируйте все ts-config.\*.json в tsconfig.ci.\*.json и обновите их пути, чтобы они ссылались на нужные файлы и каталоги (src, dist и т. д.)

Ожидалось, что запустив ng build я смогу собрать библиотеку, но вместо этого у меня появилось это сообщение:

Не удалось определить версии @ angular / compiler-cli и typescript.

(Но все пакеты установлены, проверяю дважды)

Кто-нибудь когда-нибудь пытался создать свою библиотеку Angular 6 без использования библиотеки внутри приложения?

Спасибо


person sebastian    schedule 29.05.2018    source источник


Ответы (2)


В настоящее время это невозможно, но здесь есть открытая проблема:

https://github.com/angular/angular-cli/issues/10751

person DonDaniel    schedule 04.06.2018

Я отвечаю на ваш ответ, потому что мне удалось решить все свои проблемы.

  • Теперь я могу создавать (тестировать, lint) библиотеку angular в конвейере CI.
  • Я могу интегрировать эту библиотеку в угловой проект.

Вот как я это сделал. Я создал библиотеку в почти пустом каталоге. Для выполнения ng generate library my-lib --skip-package-json --skip-ts-config вам необходимо иметь файл package.json и файл angular.json в этом каталоге. Я выбрал эти файлы из нового нового приложения ng new app и удалил ссылку на приложение из рабочей области в angular.json (в разделе проектов)

После создания библиотеки я создал папку ci в корне, куда я скопировал файлы tsconfig. *. Json, karma.json, ng-package.json и package.json. Я сохранил исходные файлы в корневом каталоге, чтобы иметь возможность использовать библиотеку в интегрированном режиме в приложении. (просто нужно добавить ссылку на lib в angular.json вашего приложения, как если бы он был сгенерирован + путь в stconfig вашего приложения)

Я обновил пути во всех файлах в папке ci, чтобы иметь возможность запускать такую ​​команду, как:

  • ng lint --format stylish --tslint-config ci/tslint.ci.json
  • ng build, установив для проекта по умолчанию в angular.json значение my-lib anf, указывающее на tsconfig и ng-package в папке ci

Один совет: в корне package.json должны быть все зависимости от нового приложения angular, чтобы иметь возможность создавать или тестировать библиотеку.

Надеюсь, это краткое объяснение поможет.

person sebastian    schedule 06.06.2018