
В этом видео мы с вами разберемся с версиями пакетов в package.json. Кстати, вопросы по версионированию пакетов тоже иногда спрашивают на собеседованиях.
Итак когда мы устанавливаем какой-то пакет, например, express, то в package.json добавляется последняя версия пакета, состоящая из трех цифр. Эти цифры означают Major, Minor, Patch и используют как спецификацию semver.
Что это значит? Когда я делаю пакет и еще не опубликовал его, то первая цифра идет 0. Это значит, что какие бы номера версий не шли дальше, я могу в любом момент менять любой функционал пакета. Потому что пакет, начинающийся с 0 - нестабильный пакет.
Когда мы опубликовали пакет, то каждый номер версии начинает иметь смысл. Последняя цифра - это PATCH. То есть внесение незначительных изменений в пакет, например bugfix.
Средняя цифра - это минорная версия. Она должна обновляться при изменениях, которые добавляют новый функционал, но не ломают то, что уже работает. Таким образом любой человек может обновится с 1.2.0 на 1.3.0 и все должно по прежнему работать.
Первая же цифра - это мажорная версия. Если внеслись хоть какие-то изменения, которые сломали текущий код, то должна релизится новая мажорная версия. Это может быть как изменение API, так и изменение порядка аргументов. Поэтому нужно делать версию 2.0.0.
Собственно вся система версий и пакетов подчиняется спецификации semver, о которой вы можете почитать на сайте semver.org.
Теперь немного о дополнительных символах при версии пакета.
Мы можем указать, что пакет должен быть больше версии 1.2.7
>= 1.2.7
Тогда, при установке пакетов версия будет искаться только среди версий, которые больше 1.2.7.
Также можно указывать range.
>=1.2.7 <1.3.0
Также есть специальные пре релизные теги.
1.2.3-alpha.3
1.2.3-beta.0
Также часто встречаются тильда и каретка.
Когда у нас стоит тильда
~1.2.3
Это значит, что версия может меняться только от 1.2.3 до 1.3.0, то есть могут применятся только патчи, а минорная версия обновлятся не может.
Если же у нас стоит каретка
^1.2.3
То можно обновлять и минорную версию и накатывать патчи. То есть от 1.2.3 до 2.0.0.
Если у вас возникли какие-то вопросы или комментарии, пишите их прямо под этим видео.