Ваш запрос функции связан с проблемой?
У нас было несколько проблем, когда развертывание не удавалось, потому что определенная версия уже развернута. Это не нормальный процесс, с которым должен столкнуться автоматический выпуск ... но он действительно случается. Вчера вечером у нас возникла ошибка, и кто-то решил вручную развернуть ее в npm, не затрагивая версию package.json. Это привело к тому, что все перешло в плохое состояние, которое не решалось, пока мы вручную не обновили версию.
Опишите желаемое решение
Продолжайте обновлять поле version
в package.json, но используйте версию npm как источник истины. Предупредите, если есть несоответствие, но обновите версию на основе версии npm, а не версии package.json.
Ооо, мне это нравится. Хотя это может быть сложно для монорепозиториев.
Поскольку мы делаем --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
используя последнюю версию - можно ли легко переключиться на версию пакета?выпуск / журнал изменений
getCurrentVersion
возвращает lastRelease, если gt (lastRelease, lastVersion) - так что это тоже нужно знатьэто означает, что мы уже используем вещи вне дерева git, верно?
Нам нужно полагаться на latestRelease, чтобы быть уверенным, что с ним связан тег git, поэтому переключение не является вариантом, потому что мы не можем быть уверены, что последняя версия npm имеет тег (как в том, что описывает эта проблема) .
Я думаю, что нам, вероятно, понадобится новый флаг, который будет версиями из последнего тега git. --from-git
С этим команда выпуска, вероятно, сработает. Нам нужно будет разобраться, как выглядит журнал изменений.
флаг --from-git
также может отменять просмотр NPM для чего угодно. Думаю, это означает, что мы можем объединить # 173
Самый полезный комментарий
Нам нужно полагаться на latestRelease, чтобы быть уверенным, что с ним связан тег git, поэтому переключение не является вариантом, потому что мы не можем быть уверены, что последняя версия npm имеет тег (как в том, что описывает эта проблема) .
Я думаю, что нам, вероятно, понадобится новый флаг, который будет версиями из последнего тега git.
--from-git
С этим команда выпуска, вероятно, сработает. Нам нужно будет разобраться, как выглядит журнал изменений.
флаг
--from-git
также может отменять просмотр NPM для чего угодно. Думаю, это означает, что мы можем объединить # 173