#npm #npm-install #npm-link
#npm #npm-install #npm-link
Вопрос:
Я уверен, что у других есть этот рабочий процесс, поэтому я, должно быть, что-то здесь упускаю.
Как можно разработать новую версию пакета, связать его с тестированием в другом приложении, а затем установить другой (несвязанный) пакет?
Что я сделал:
- Запустите
git clone git@package-to-update amp;amp; cd package-to-update
. - Отредактируйте пакет, обновите
package-to-update/package.json
версию до2.0.0
. - Обновите
my-app/package.json
для использованияpackage-to-update@2.0.0
. cd package-to-update amp;amp; npm link amp;amp; cd my-appp amp;amp; npm link package-to-update
.- Протестируйте
my-app
, посмотрите, чтоpackage-to-update@2.0.0
решает проблему, устройте небольшую вечеринку. - Нажмите на
package-to-update
восходящий поток, создайте запрос на слияние и дождитесь, пока сопровождающие объединят мои изменения. - Пока используйте мою локальную связанную версию, поскольку это требуется для функции, над которой я работаю.
- Обратите внимание, что мне нужен другой пакет
other-unrelated-package
my-app
. - Запустите
cd my-app amp;amp; npm install other-unrelated-package
. - NPM завершается с ошибкой, потому что он пытается извлечь
package-to-update@2.0.0
, который еще не опубликован. - Плачь.
Является ли единственным вариантом здесь запускать следующий процесс каждый раз, когда вы хотите npm install
?
- Понизьте
package-to-update
my-app/package.json
версию. - Запустите
npm install other-package
. - Запустите
npm link package-to-update
. - Обновите
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.