Понимание управления версиями пакетов в разработке программного обеспечения: различия между ^, ~ и отсутствием символов

Введение

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

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

Системы управления пакетами используют разные символы для обозначения зависимости от версии. Наиболее распространенными символами являются ^ (каретка) и ~ (тильда), или символы не используются. В этом уроке мы объясним варианты и увидим различия между ними.

Версионные части

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

Главный

Основная версия — это первая часть номера версии. Он представляет собой критические изменения в программном обеспечении, такие как изменения в API или интерфейсе, которые могут вызвать проблемы совместимости со старыми версиями программного обеспечения.

Незначительный

Второстепенная версия — это вторая часть номера версии. Это представляет собой небольшое, но существенное изменение программного обеспечения, такое как новые функции, исправления ошибок и другие улучшения, не влияющие на обратную совместимость.

Пластырь

Патч — это третья часть номера версии. Он представляет собой незначительные изменения программного обеспечения, включая исправления ошибок, исправления безопасности и другие незначительные обновления, которые не влияют на функциональность или совместимость.

Номер версии сборки/редакции

Версия сборки или номер редакции — это дополнительная информация, которую используют некоторые программы. Эта часть номера версии представляет конкретную сборку или выпуск программного обеспечения и обычно используется только для целей внутреннего отслеживания.

Символ вставки (^)

Символ вставки (^) указывает, что обновления пакета разрешены, если они не являются основными обновлениями, нарушающими обратную совместимость.

Например, если у вас есть зависимость пакета с версией ^1.2.3, она позволит обновляться до версии 2.0.0 (если доступно), но не до 3.0.0, при условии, что версия 2.0.0 обратно совместима с версией 1.2. 3.

Предположим, ваш проект зависит от пакета «lodash», и вы хотите разрешить обновления до следующего основного выпуска, но не после этого. Вы можете указать зависимость следующим образом:

"dependencies": {
"lodash": "⁴.17.11"
}

С этой спецификацией зависимости вы разрешаете обновления до версии 5.0.0 (если доступно), но не 6.0.0, при условии, что версия 5.0.0 обратно совместима с версией 4.17.11.

Символ тильды (~)

Символ тильды (~) указывает на то, что вы хотите разрешить обновления пакета, если они относятся к одной и той же дополнительной версии. Например, если у вас есть зависимость пакета с версией ~1.2.3, это означает, что вы разрешаете обновления до версии 1.3.0, но не до 2.0.0.

Предположим, ваш проект зависит от пакета «axios», и вы хотите разрешить обновления до следующего минорного релиза, но не до следующего. Вы можете указать зависимость следующим образом:

"dependencies": {
"axios": "~0.21.1"
}

С этой спецификацией зависимости вы разрешаете обновления до версии 0.22.0 (если она доступна), но не до 1.0.0, предполагая, что версия 0.22.0 обратно совместима с версией 0.21.1.

Нет символа

Если символ не используется, это обычно означает, что требуется точное соответствие версии. Например, если у вас есть зависимость пакета, указанная как 1.2.3, это означает, что разрешена только версия 1.2.3 пакета.

Предположим, ваш проект зависит от пакета «реагировать», и вы хотите указать точную версию. Вы можете указать зависимость следующим образом:

"dependencies": {
"react": "16.8.6"
}

С этой спецификацией зависимостей разрешена только версия 16.8.6 пакета реакции.

Заключение

В заключение, понимание символов, используемых в системах управления пакетами, имеет решающее значение, чтобы избежать проблем с зависимостями вашего проекта. Подводя итог, можно сказать, что символ вставки (^) позволяет выполнять обновления до следующей основной версии при условии обратной совместимости, а символ тильды (~) позволяет выполнять обновления до следующей дополнительной версии при условии обратной совместимости, а при отсутствии символа разрешается обновление до следующей основной версии. точная версия.

👉Подпишитесь на меня в Instagram👈

Дополнительные материалы на PlainEnglish.io.

Подпишитесь на нашу бесплатную еженедельную рассылку новостей. Подпишитесь на нас в Twitter, LinkedIn, YouTube и Discord .