Auto: Используйте npm как источник истины для версии

Созданный на 8 янв. 2019  ·  10Комментарии  ·  Источник: intuit/auto

Ваш запрос функции связан с проблемой?

У нас было несколько проблем, когда развертывание не удавалось, потому что определенная версия уже развернута. Это не нормальный процесс, с которым должен столкнуться автоматический выпуск ... но он действительно случается. Вчера вечером у нас возникла ошибка, и кто-то решил вручную развернуть ее в npm, не затрагивая версию package.json. Это привело к тому, что все перешло в плохое состояние, которое не решалось, пока мы вручную не обновили версию.

Опишите желаемое решение

Продолжайте обновлять поле version в package.json, но используйте версию npm как источник истины. Предупредите, если есть несоответствие, но обновите версию на основе версии npm, а не версии package.json.

enhancement

Самый полезный комментарий

Нам нужно полагаться на latestRelease, чтобы быть уверенным, что с ним связан тег git, поэтому переключение не является вариантом, потому что мы не можем быть уверены, что последняя версия npm имеет тег (как в том, что описывает эта проблема) .

Я думаю, что нам, вероятно, понадобится новый флаг, который будет версиями из последнего тега git. --from-git

С этим команда выпуска, вероятно, сработает. Нам нужно будет разобраться, как выглядит журнал изменений.

флаг --from-git также может отменять просмотр NPM для чего угодно. Думаю, это означает, что мы можем объединить # 173

Все 10 Комментарий

Ооо, мне это нравится. Хотя это может быть сложно для монорепозиториев.

Поскольку мы делаем --force-publish=* для lerna, это не должно быть проблемой, поскольку все пакеты должны иметь связанную версию.

В будущем, если мы удалим этот флаг, нам придется ... idk

Также мы просто запускаем npm version который принимает только строку semver. На самом деле мы сейчас нигде не устанавливаем номер пакета. Самостоятельно установить его было бы несложно, но монорепозитории опять же кажутся непростыми.

Большинство команд также работают с тегами, поэтому, если выпуск не был помечен, это могло вызвать некоторые проблемы.

«Я все больше убеждаюсь, что« независимый »режим управления версиями был ошибкой. Все, что он заставляет людей бросать случайные пакеты в один репозиторий, а затем жаловаться, когда им приходится одновременно обновлять их версии». ~ от разработчика lerna.

Так что --force-publish=* вроде нормально.

--force-publish и независимое управление версиями - это не одно и то же.
По умолчанию lerna будет публиковать обновление для пакета только в том случае, если в нем есть изменения. Используя --force-publish=* мы заставляем lerna публиковать версию всех пакетов, даже если с момента последней публикации изменений не было.

т.е. пакет A имеет изменения, а B - нет. lerna опубликует только новую версию A ( B останется в текущей версии). В следующем выпуске A и B есть изменения, они оба будут опубликованы с одной и той же новой версией.

Что-то, о чем я думал (и я не уверен, поддержим ли мы это когда-нибудь), - это возможность выпуска релизов, которые не являются master (или основной веткой). До этого момента мы всегда предполагали, что есть один путь для выпусков, и они всегда линейны (с использованием версии latest на npm или github).

Что происходит в случае необходимости исправления предыдущей версии? (В 1.x есть ошибка, master - в 2.x, но вы также хотите исправить 1.xw / исправление) Если мы выходим из lerna или pkg version Думаю, у нас все будет хорошо. Поиск PR будет вычислять новый удар semver и применять его к версии в текущей ветке.

Если мы изменим это, чтобы использовать что-то вне дерева git, я не думаю, что мы сможем поддержать такое поведение, поскольку в npm (или где бы мы ни получали последнюю версию) всегда есть только 1 latest

Кажется, это хорошая особенность. Для реализации может потребоваться некоторая работа.

версия:

  • Мы вычисляем version используя последнюю версию - можно ли легко переключиться на версию пакета?
  • Последний выпуск на github может быть проблемой. Я не думаю, что вы действительно можете программно установить «Последний выпуск». Так что при публикации патча 1.x он станет последним выпуском.

выпуск / журнал изменений

  • getCurrentVersion возвращает lastRelease, если gt (lastRelease, lastVersion) - так что это тоже нужно знать

это означает, что мы уже используем вещи вне дерева git, верно?

Нам нужно полагаться на latestRelease, чтобы быть уверенным, что с ним связан тег git, поэтому переключение не является вариантом, потому что мы не можем быть уверены, что последняя версия npm имеет тег (как в том, что описывает эта проблема) .

Я думаю, что нам, вероятно, понадобится новый флаг, который будет версиями из последнего тега git. --from-git

С этим команда выпуска, вероятно, сработает. Нам нужно будет разобраться, как выглядит журнал изменений.

флаг --from-git также может отменять просмотр NPM для чего угодно. Думаю, это означает, что мы можем объединить # 173

Была ли эта страница полезной?
0 / 5 - 0 рейтинги