Установите пакет из npm после ссылки на другой локальный пакет с обновленной версией

#npm #npm-install #npm-link

#npm #npm-install #npm-link

Вопрос:

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

Как можно разработать новую версию пакета, связать его с тестированием в другом приложении, а затем установить другой (несвязанный) пакет?

Что я сделал:

  1. Запустите git clone git@package-to-update amp;amp; cd package-to-update .
  2. Отредактируйте пакет, обновите package-to-update/package.json версию до 2.0.0 .
  3. Обновите my-app/package.json для использования package-to-update@2.0.0 .
  4. cd package-to-update amp;amp; npm link amp;amp; cd my-appp amp;amp; npm link package-to-update .
  5. Протестируйте my-app , посмотрите, что package-to-update@2.0.0 решает проблему, устройте небольшую вечеринку.
  6. Нажмите на package-to-update восходящий поток, создайте запрос на слияние и дождитесь, пока сопровождающие объединят мои изменения.
  7. Пока используйте мою локальную связанную версию, поскольку это требуется для функции, над которой я работаю.
  8. Обратите внимание, что мне нужен другой пакет other-unrelated-package my-app .
  9. Запустите cd my-app amp;amp; npm install other-unrelated-package .
  10. NPM завершается с ошибкой, потому что он пытается извлечь package-to-update@2.0.0 , который еще не опубликован.
  11. Плачь.

Является ли единственным вариантом здесь запускать следующий процесс каждый раз, когда вы хотите npm install ?

  1. Понизьте package-to-update my-app/package.json версию.
  2. Запустите npm install other-package .
  3. Запустите npm link package-to-update .
  4. Обновите package-to-update в my-app/package.json «.

Ответ №1:

Я обычно использую только npm link для разработки. Если я хочу использовать локальную версию и не иметь дело с перелинковкой, я устанавливаю ее по пути, а не по версии.

 npm install /file/path/to/your/module
  

Тогда в вашем file: package.json :

     "slug": "file:../../slug"
  

npm install В этом случае последующий поиск в реестре не будет выполнен. (Поскольку это позволит избежать использования реестра при будущих npm install запусках, это также означает, что вам нужно не забыть вернуть его обратно в реестр, когда будет выпущена версия с вашим патчем!)

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

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

1. Но я не хочу постоянно полагаться на свою локальную версию, я просто хочу использовать ее во время разработки. Когда моя функция будет завершена, я хотел бы пометить запрос на слияние как WIP, пока вышестоящий репозиторий не примет и не объединит мои изменения, и мы не сможем использовать официальный обновленный пакет в CI.