Проблемы с публикацией и установкой пакета npm в частном реестре

Я закончил свой пакет (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 30.05.2019 17:57

@filipe как настроить такой запасной вариант?

Claudiu Creanga 30.05.2019 17:58

Я обновил свой ответ, и теперь он включает в себя, как это сделать с помощью артефакта.

filipe 30.05.2019 18:37
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
2
3
148
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Разработчики npm не собираются облегчать/разрешать выпуск для нескольких реестров одновременно, потому что это может привести к таким проблемам, как:

  • Данная версия может быть в одном реестре, но не в другом.
  • Одна и та же версия может быть выпущена в каждом реестре с разным кодом.

Чтобы решить проблему, связанную с частными/общедоступными реестрами, большинство частных реестров используют функцию прокси (если запрошенный пакет находится в частном репозитории, обслуживайте его, в противном случае делегируйте запрос общедоступному реестру).

Многие решения для реестра также предлагают функцию репликации.

С помощью этой функции вы сможете публиковать только в одном реестре и обслуживать его из нескольких.

Вы используете артефакты, и они позволяют настроить внешние зависимости переписывание.

Установите флажок «Включить перезапись зависимостей» в виртуальном окне npm. расширенная конфигурация репозитория.

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