В любой момент времени Node.js имеет несколько выпусков, происходящих в нескольких ветках. Каждый из которых представляет версию Node.js. Все эти выпуски имеют разные уровни стабильности и варианты использования, поэтому важно понять процесс, прежде чем использовать Node.js всерьез.

Типы выпусков

Во-первых, чтобы понять график релизов, нужно разобраться в типах релизов:

Текущий

Добавлены новые функции и функции, но обратная совместимость с текущей версией сохраняется. Это происходит только в самой последней версии в любой момент времени. Официальные релизы пронумерованы и находятся в https://github.com/nodejs/node/releases и доступны через Node Version Manager.

Ночной

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

Долгосрочная поддержка (LTS)

Сосредоточены на стабильных улучшениях и обновлениях безопасности, никакие критические изменения или функции не добавляются, если это не требуется для исправления ошибок или безопасности. Это происходит одновременно в нескольких версиях Node.js. Есть 2 подвида:

  • Активно: новые функции, улучшения, обновления для системы безопасности и добавление ненарушающих функций из будущих выпусков. Например, функция может быть добавлена ​​с узла 14 на узел 12.
  • Техническое обслуживание. Будут добавлены только обновления безопасности и исправления ошибок.

График выпуска

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

Текущий

В дополнение к ряду критических изменений выпускается набор новых функций. После этого добавляются все типы некритических изменений. Это делается в течение 6 месяцев. Если номер версии нечетный (например, Node.js 13), то версия больше не обновляется и не поддерживается после этой даты. Если четное число, то переходит к следующему шагу:

Активный

Как упоминалось ранее, добавляются все типы некритических изменений. Это делается около 18 месяцев до следующего этапа:

техническое обслуживание

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

Вместе 30-месячный период активной и поддерживающей стадий составляет фазу долгосрочной поддержки.

Как правило, выпуски с нечетными номерами, как правило, включают в себя наиболее важные критические изменения, в то время как выпуски с четными номерами часто являются их усовершенствованием. Например, корректировка API на основе отзывов пользователей в выпуске с нечетным номером.

Случаи применения

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

Фаза обслуживания в основном предназначена для того, чтобы дать дополнительный год гибкости, когда проект должен адаптировать новую версию. Команда могла бы просто использовать отладочные выпуски, чтобы не беспокоиться о новых функциях и получать менее частые обновления, но у этого есть ряд недостатков. Во-первых, это дает только короткий 1 год для внесения изменений, нарушающих интеграцию. Во-вторых, все обновления ветки Active не должны прерываться, т. е. обновления должны быть плавным процессом. Наконец, и это самое главное, отладочная версия по-прежнему нуждается в регулярном обновлении для важных обновлений безопасности и исправлений ошибок. Переход на версию, находящуюся на стадии обслуживания, не означает, что вы забудете об обновлении до следующего крупного четного выпуска.

Текущая версия предназначена для опробования новых функций и подготовки к критическим изменениям. Это полезно для авторов библиотек и фреймворков, чтобы убедиться, что их код работает хорошо, прежде чем большинство пользователей примут самую последнюю версию Node.js (на предстоящей активной стадии). В некоторых редких случаях производственные проекты могут захотеть принять текущий выпуск, если просто нет возможности компенсировать будущую функцию. Хотя это означает иметь дело с очень частыми обновлениями, и если в нечетной версии не более 6 месяцев для перехода к критическим изменениям.

Текущий основной выпуск Node.js — 14, и он станет активным в октябре этого года. Расписание релизов можно посмотреть здесь: https://nodejs.org/ru/about/releases/

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