Я закончил свой пакет (1 файл js) и хочу опубликовать его на Artifextory.
пакет.json:
{
"name": "@company/package_name",
"main": "dist/index.js",
"publishConfig": {
"registry": "http://artifactory_url"
},
"files": ["dist/index.js"],
"devDependencies": {
"tslint": "^5.15.0",
"webpack": "^4.29.6",
},
"dependencies": {
"axios": "^0.18.0"
}
}
Я публикую это:
npm login --registry=https://artifacory_url --scope=@company
npm publish
мой пакет npm теперь доступен на артефакте (1 файл js и package.json)
Теперь, если я хочу установить его:
npm install @company/package_name --registry=https://artifacory_url
он жалуется, что зависимости нет в реестре npm:
Not Found - GET https:artifactory_url/axios - not_found
npm ERR! 404
npm ERR! 404 'axios@^0.18.0' is not in the npm registry
что, конечно, правда, у меня нет axios
опубликованного в моем реестре, но я ожидал, что он получит его из реестра npm.
Я не уверен в стратегии, которой следует следовать.
Я использую webpack
, поэтому axios
уже включен в мой файл dist/index.js
. Должен ли я относиться к этому как к devDependencies, например tslint
? Кажется, что это не зависит от меня...
@filipe как настроить такой запасной вариант?
Я обновил свой ответ, и теперь он включает в себя, как это сделать с помощью артефакта.
Разработчики npm не собираются облегчать/разрешать выпуск для нескольких реестров одновременно, потому что это может привести к таким проблемам, как:
Чтобы решить проблему, связанную с частными/общедоступными реестрами, большинство частных реестров используют функцию прокси (если запрошенный пакет находится в частном репозитории, обслуживайте его, в противном случае делегируйте запрос общедоступному реестру).
Многие решения для реестра также предлагают функцию репликации.
С помощью этой функции вы сможете публиковать только в одном реестре и обслуживать его из нескольких.
Вы используете артефакты, и они позволяют настроить внешние зависимости переписывание.
Установите флажок «Включить перезапись зависимостей» в виртуальном окне npm. расширенная конфигурация репозитория.
Я был неправ, я настроил свой частный реестр на откат к общедоступному реестру, когда разрешение пакета не найдено.