Совместное использование угловой библиотеки в нескольких проектах
Я работаю над угловым 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
файл.
Этого было бы достаточно. Если вы хотите поделиться библиотекой в сети без копирования и вставки исходного кода, возможно, лучше попросить вашу компанию заплатить за частный репозиторий:)