Понимание управления версиями пакетов в разработке программного обеспечения: различия между ^, ~ и отсутствием символов
Введение
При разработке программного обеспечения обычно используются внешние библиотеки или модули, написанные другими разработчиками, чтобы избежать написания кода с нуля. Эти внешние библиотеки или модули называются пакетами.
Если в вашем проекте используются сторонние пакеты, необходимо указать версии пакетов. Это важно, потому что разные версии одного и того же пакета могут содержать разные функции, исправления ошибок и, возможно, изменения, меняющие правила игры.
Системы управления пакетами используют разные символы для обозначения зависимости от версии. Наиболее распространенными символами являются ^ (каретка) и ~ (тильда), или символы не используются. В этом уроке мы объясним варианты и увидим различия между ними.
Версионные части
Номер версии обычно состоит из двух или трех частей, разделенных точками, например 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 .