Задать вопрос
@nickerlan

Чем управлять модулями?

Вот написал я пару симпатичных классов на nodejs. В моем случае - обертки вокруг API нескольких сервисов
Хочу теперь использовать их как "арсенал" в разных проектах.
Проекты, в основном, веду один, на одной и той же машине. Иногда подключаются по несколько человек.

Вот вижу у меня написано
const myscript = require('./myscript')

Как теперь это превратить в "универсальную кодовую базу"? Хотя бы для личного использования?

Пробовал репозиторий на гитхабе. Потом npm publish.

На новом проекте npm install myscript

А теперь как мне оперативно изменения внести в этот модуль? Прямо в node_modules править (выискивая свой модуль каждый раз в этой огномной простыне), потом прямо оттуда-же пушить изменения, а затем паблишить их?

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

Как это по-человечески делается?
  • Вопрос задан
  • 421 просмотр
Подписаться 1 Простой 1 комментарий
Пригласить эксперта
Ответы на вопрос 3
Xuxicheta
@Xuxicheta
инженер
Можно забирать модуль не из npm, а напрямую из git репозитория.
А можно и в npm паблишить обновленные версии.
Если вам нужно редактировать модуль прям на месте, луше тогда подключить этот код как git submodule, а не пакет npm. Редактировать прям в node_modules не стоит.
Ответ написан
Ni55aN
@Ni55aN
Если изменения нужно вносить часто, сопоставимо с изменениями в самом проекте, тогда это не стоит выносить как отдельный модуль.


А теперь как мне оперативно изменения внести в этот модуль? Прямо в node_modules править (выискивая свой модуль каждый раз в этой огномной простыне), потом прямо оттуда-же пушить изменения, а затем паблишить их?


Можно установить локальный пакет (npm i ../module-folder): в самом проекте (в package.json будет путь к пакету, вместо версии на npmjs) или выделить дев проект-обертку, чтобы в основном проекте каждый раз не свапать этот пакет между локальным и удаленным. Таким обрабом можно с тем же HMR нормально редактировать пакет, без правок в node_modules и публикаций на каждый чих
Ответ написан
Есть ещё npm link (yarn link). Полезно, чтобы отладить изменения локально. Но как только отлажены - публиковать. Не вижу проблемы с этим.

Если не хочется публиковать вручную - научите CI делать это автоматически. Например, при внесении изменений в ветку master формировать и публиковать dev-версию. Посмотрите, сколько dev-версий у того же typescript.

Если же изменения вносятся постоянно сразу в несколько модулей, то в таких модулях нет смысла. Подумайте, чтобы поместить их в один репозиторий. Кстати, yarn понимает ссылки прямо в package.json:
{
  "devDependencies": {
    "my-local-dep": "link:../my-local-dep"
  }
}
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы