Я создал библиотеку Angular, запустив:
ng new my-library-lib
cd my-library-lib
ng generate library my-library
Это создает приложение Angular и внутри него папку под названием "проекты" с кодом библиотеки:
Код приложения:
- projects
-- my-library
--- src
---- lib
----- <code of the library (components, services)>
---- public_api.ts
--- <config files (ng-package.json, package.json, ...)>
- src
-- <code of the container application>
Итак, имея такую структуру, я не знаю, как опубликовать библиотеку в Bitbucket, чтобы ее использовали другие приложения таким образом:
package.json:
"my-library": "git+https://bitbucket/.../.../my-library.git#v0.0.1"
Я следовал руководству по созданию библиотеки и могу использовать ее в приложении-контейнере. Также мне удалось использовать его в других приложениях, установив созданный .tgz:
"build_lib": "ng build my-library",
"npm_pack_lib": "cd dist/my-library && npm pack",
"package_lib": "npm run build_lib && npm run npm_pack_lib"
Последний шаг - опубликовать его и пометить для использования.
Для публикации библиотеки есть много вещей, о которых нужно позаботиться, к счастью, есть инструмент ng-packagr, который действительно упрощает нашу жизнь, ng-packagr - это библиотека узлов, которая может скомпилировать и упаковать библиотеку TypeScript в формат пакета Angular.
https://www.npmjs.com/package/ng-packagr
Извините, я не знал, что я использую nrwl (nrwl.io) для создания моих проектов angular, после завершения сборки мы переходим в каталог dist и делаем npm pack, создается zip-файл, который можно опубликовать / использовать в других проекты.
Должен ли я публиковать папку dist как проект в другом репозитории?
вы можете создать новую библиотеку папок, вставить в нее свой zip-файл, предполагая, что его имя XYZ, выполните npm i ./library/XYZ из корня, он обновит package.json,
Вы хотите создать новое репо только с zip-файлом? Чего я хочу достичь, чего я не знаю, смогу ли я, - это загрузить код в репозиторий в Bitbucket, пометить его и импортировать в любое другое приложение, как я указал в описании, указав на репозиторий и тег
либо вы можете скопировать этот zip-файл внутри нового проекта в новую папку ниже src и npm i (путь), иначе вы можете опубликовать пакет на npmjs.com и использовать его без необходимости выполнять весь этот процесс вручную для всех проектов , чтобы опубликовать пакет на npm, обратитесь к статье hackernoon.com/publish-your-own-npm-package-946b19df577e
Поправьте меня, если я ошибаюсь, но я считаю, что
ng build my-library
делает то же самое. Папка dist у меня уже создана