Совместное использование угловой библиотеки в нескольких проектах

Я работаю над угловым 7+ проектом, который состоит из backend + frontend. Теперь я застрелен с требованием, где мне нужно создать еще один проект, который включает в себя frontend+backend. Но есть некоторый код многократного использования, который можно использовать в обоих приложениях.

Моя Peoject Структура

требование

Поэтому, когда я читал о концепциях библиотеки, я мог найти

1) Создайте два приложения и создайте общую библиотеку

Я не могу принять этот подход, так как я использую угловой шаблон проекта asp.net, созданный в визуальной студии (как показано здесь). Два приложения (Project One и Project Two) имеют свои собственные FE+BE. Следовательно, я не могу сгруппировать два приложения FE в одной папке и заставить их использовать общую библиотеку.

2) Создайте библиотеку и загрузите в npm и используйте в качестве зависимости

Я не могу принять этот подход, так как код является частным и не может быть передан за пределы сети. Также нет локального корпоративного реестра npm для использования корпоративного npm.

Я знаю, что это можно сделать с помощью концепции библиотеки. Но я не понимаю, как это можно сделать в нескольких приложениях. Может ли кто-нибудь помочь с решением для этого. Спасибо!

3 ответа

Учитывая сценарий каталога, который вы упомянули в своем OP, вы можете добавить свою библиотеку по локальному пути, как упомянуто в документации NPM: Local Paths:

- Root
|
 -- Project One 
|
 -- Project Two
|
 -- Library usued across both projects

Например, в package.json Project One, вы можете добавить библиотеку в качестве зависимости:

"dependencies" : {
  "my-shared-library" : "file:../Library usued across both projects",
}

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


Альтернативное решение и дальнейшие планы

2) Создайте библиотеку и загрузите ее в npm и используйте в качестве зависимости. Я не могу использовать этот подход, так как код проприетарный и не может использоваться совместно за пределами сети. Также нет локального корпоративного реестра npm для использования корпоративного npm.

Это не совсем точно. Вы действительно можете принять этот подход в качестве альтернативного решения или если вы думаете, что вы могли бы использовать эту библиотеку в будущем в другом проекте. Есть один способ сделать это, как упомянуто в документации NPM: Git URLs как Зависимости.

package.json

"dependencies" : {
  "my-shared-library" : "Git repo address here. There are various ways to specify an address. See below.",
}

Как добавить библиотеку в качестве зависимости

  • Предположим, вы создали новый репозиторий для этой библиотеки:
"dependencies" : {
  "my-shared-library" : "git+ssh://git@my-companys-treasure.com/my-shared-library.git",
}

Таким образом, вы даже можете использовать разные версии вашей библиотеки. Скажем, вы разрабатываете новую версию (т.е. 4.2.0) вашей библиотеки для Project One и не готов или не должен использоваться Project Two, в package.json из Project One Вы можете добавить это так:

"dependencies" : {
  "my-shared-library" : "git+ssh://git@my-companys-treasure.com/my-shared-library.git#branch-v4.2.0",
}
  • Или вы можете создать новую ветку, скажем, branch-for-my-shared-libraryв текущем репозитории (при условии, что и Project One, и Project Two помещаются в один и тот же репозиторий):
"dependencies" : {
  "my-shared-library" : "git+ssh://git@my-companys-treasure.com/my-current-project.git#branch-for-my-shared-library",
}

Также обратите внимание, что есть несколько протоколов, которые вы можете указать в URL, как указано в документе:

Это протокол git, git+ssh, git+http, git+https или git+file.

Дальнейшие заметки:

Удачного кодирования.

1). Вы можете попробовать использовать пакет npm для своей библиотеки:

"scripts": {
   ...
   "build_lib": "ng build --prod example-lib",
   "npm_pack": "cd dist/example-lib && npm pack",
   "package": "npm run build_lib && npm run npm_pack"
}

2) После запуска 'npm pack' сгенерированный файл будет выглядеть так: example-lib-0.0.1.tgz

3) Вы можете установить из другого проекта, используя: npm install../ndomsome-paths‹/example-lib/dist/example-lib/example-lib-0.0.1.tgz

Проверьте более подробную информацию здесь: https://blog.angularindepth.com/creating-a-library-in-angular-6-part-2-6e2bc1e14121

Вы можете использовать ссылку npm.

Ссылка npm в папке пакета создаст символическую ссылку в глобальной папке {префикс}/lib/node_modules/, которая ссылается на пакет, в котором была выполнена команда npm link.

Вкратце, этого достаточно, если вы зайдете в папку библиотеки и наберете:

npm link

Затем вы можете перейти в проект, в котором вы хотите использовать библиотеку, и набрать:

npm link <project-name>

куда <project-name> это имя присутствует внутри package.json файл.

Этого было бы достаточно. Если вы хотите поделиться библиотекой в ​​сети без копирования и вставки исходного кода, возможно, лучше попросить вашу компанию заплатить за частный репозиторий:)

Другие вопросы по тегам