"npm init" и использование не-semver стандартов

При создании нового проекта node.js сначала выполняется следующее:

npm init

И есть ряд вопросов, которые помогут инициализировать package.json файл. Один из этих вопросов о version,

Номер версии, предоставленный в качестве ответа, должен строго соответствовать стандарту semver. А что если я хотел бы использовать другой стандарт управления версиями, который не соответствует semver? Как обеспечить использование другой версии стандарта? Могу ли я также предоставить новые правила для нового стандарта, который будет использоваться вместо semver для обеспечения соблюдения нового стандарта управления версиями?

Благодарю.

1 ответ

Решение

Вы никогда не должны нарушать контракты, которые присущи использованию определенного инструмента упаковки / распространения. В этом случае npm требует SemVer, поскольку он обеспечивает удобный канал связи между издателями и потребителями, который легко автоматизируется. Поскольку ваша схема управления версиями не делает различий между исправлениями ошибок, новыми функциями и критическими изменениями, лучшее, что вы можете сделать, это применить сопоставление из нее к SemVer, если вы должны использовать npm в качестве схемы упаковки. Есть два способа сделать это.

  1. Используйте 0.0.1 для всех версий и добавьте -prerelease, который содержит вашу актуальную последовательную версию. Они будут отсортированы так, как вы ожидаете, при условии, что каждое из пререлизных полей с точками чисто числовое, и они всегда будут допустимы с точки зрения семантического управления версиями.
  2. Пользователь 0.0.X, где X является наиболее значимым полем вашей схемы управления версиями, а оставшиеся значения вы добавляете в тег -prerelease в виде чистых числовых точек.

Любая из этих схем является законной SemVer и объявляет всем потребителям о том, что любая новая версия потенциально является серьезным изменением. Префикс 0.0 в SemVer означает, что все ставки выключены. Таким образом, потребители, желающие принять риск, могут автоматически обновиться до последней версии, а те, кто не желает принимать такие риски, могут их избежать.

Примеры на основе ваших комментариев:

0.0.1-2018.01
0.0.1-2018.02
0.0.1-2019.03

0.0.2018-01
0.0.2018-02
0.0.2019-03

После приведенных выше примеров я лично предпочитаю второй вариант первому, но что касается правил SemVer, то они буквально равны.

Другие вопросы по тегам