Продвижение пакета npm с зависимостями для представления выпуска

#azure #npm #azure-devops

#azure #npm #azure-devops

Вопрос:

Представьте себе канал Azure DevOps (MyFeed) пакетов npm с двумя представлениями: локальным и релизным. Этот канал имеет восходящий источник https://registry.npmjs.org /. Два пакета (@scope /a и @scope / b) уже опубликованы и находятся в локальном представлении. Оба они напрямую зависят от пакета prop-types из npmjs:

   "dependencies": {
    "prop-types": "^15.7.2"
  },
  "peerDependencies": {
    "react": "^16.12.0",
    ...
  }
  

Пакеты «a» и «b» Установлены, собраны (т. Е. Сборник рассказов) и развернуты в некоторой тестовой среде для проверки. Во время установки пакетов их prop-типы зависимостей сохраняются из восходящего потока в локальное представление канала.

Предположим, что пакет A проходит проверку и повышается до @Release view. Затем я пытаюсь установить его в основной проект, который подключен к MyFeed@Release. Но установка завершается неудачно, поскольку prop-types все еще находится в локальном представлении:

 $ npm i @scope/a
npm ERR! code E404
npm ERR! 404 Not Found - GET https://*/*/_packaging/MyFeed@Release/npm/registry/prop-types - NotFound
npm ERR! 404
npm ERR! 404  'prop-types@^15.7.2' is not in the npm registry.
npm ERR! 404 You should bug the author to publish it (or use the name yourself!)
npm ERR! 404 It was specified as a dependency of '@scope/a'
  

Единственный способ начать использовать пакет «a» — это перенести все его зависимости в одно и то же представление (пакет «b» после этого все равно устанавливается правильно). Но разве это не должно выполняться автоматически? Или есть обходной путь для использования непромотированных (локальных) пакетов восходящего потока? Может быть много зависимостей от общедоступных пакетов из npmjs, которыми вряд ли можно управлять вручную.

Может быть, мне следует создать другой канал, подключенный к npmjs, и использовать его «перед» MyFeed, например: npmjs <- MyUpstreamFeed (только с локальным представлением) <- MyFeed (напрямую не подключен к npmjs).

Комментарии:

1. Предлагаемое решение с MyUpstreamFeed тоже не будет работать. Пакеты из npmjs должны быть предварительно сохранены в MyUpstreamFeed, в противном случае он вернет 404 в MyFeed. Я проверил это сам, и результат соответствует документам .