Совместное использование угловой библиотеки в нескольких проектах - PullRequest
10 голосов
/ 13 мая 2019

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

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

Here

Требование

Here

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

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

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

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

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

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

Ответы [ 3 ]

2 голосов
/ 23 мая 2019

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

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

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

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

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


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

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 голос
/ 13 мая 2019

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 сгенерированный файл будет выглядеть так: example-lib-0.0.1.tgz

3) Вы можете выполнить установку из другого проекта, используя: npm install.здесь: https://blog.angularindepth.com/creating-a-library-in-angular-6-part-2-6e2bc1e14121

1 голос
/ 13 мая 2019

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

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

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

npm link

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

npm link <project-name>

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

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

...