Поддержка актуальности npm-пакетов и библиотек



Начну с важной информации. Такой пакет как gulp-sass обновился до 5й версии и теперь имеет чуть другой синтаксис подключения в gulpfile. На платформе пару дней назад я добавил эту информацию в урок и во всех материалах поменял все файлы, которые были с этим связаны (курс Web-разработчик). В других курсах, да и своих проектах обратите внимание на версию этого пакета. Если захотите обновить до самой новой версии, то подключение теперь выглядит вот так:



const sass = require('gulp-sass')(require('sass'));



И обязательно установить сам пакет sass в систему: npm i sass -g



Теперь вообще про поддержку. Если вы уже устанавливали хоть один пакет для учебы/работы - это вас будет касаться всегда)

Любая технология, любая библиотека или пакет имеет свою версию. Каждая последующая что-то меняет, делает его лучше, а иногда и хуже. (Что случается нередко). Когда мы все только учились или учимся, то на версии нам глубоко плевать 🙂 И это правильно, лишь бы работало. Но когда вы попадете на реальный, большой, а может и древний проект, то вы столкнетесь с тем, что любое изменение в версиях любых пакетов может поломать всю систему.



Почему так происходит? Пакеты обновляются не только ради улучшений, но и иногда потому, что какой-то кусочек, от которого он зависел, просто перестал поддерживаться. Хороший пример - https://www.npmjs.com/package/node-sass Вы можете увидеть красные буквы deprecated. То есть, он больше не поддерживается и лучше его не использовать в новых проектах. (На 100% не уверен, но видимо от этого пакета и gulp-sass зависел). Отсюда и обновления. Таких примеров очень много.

При этом прошу заметить, что на момент написания этой заметки у пакета node-sass 4 600 000 скачиваний за неделю. Откуда, спросите вы?



Все просто. Кто-то клонировал или скачал проект, запустил npm i и установил все зависимости из package.json. И в 98% случаев пакеты не будут последних версий) При разработке никто не ставит задачу придерживаться последних версий. Наоборот: закодили все на стабильных версиях, запустили в жизнь и по желанию уже можно аккуратно обновлять пакеты. Проекты могут и очень часто содержат версии двухгодичной давности, библиотеки старых версий и тп. Работает - не трогай 😁



Когда необходимо обновление? Тут две дорожки:

- когда одна из зависимостей совсем «умерла» и нужно обновляться. Не удивляйтесь, что бывает и такое)

- планомерная актуализация проекта. Это правильный путь, но не у всех есть ресурсы на это.

Из реальных историй: у меня друг работал на проекте, где они тем и занимались, что переводили свое детище на новые версии Ангуляра. Пока переводили с 6й на 7ю, уже вышла 8я и тд 🙂



Что делать, если встала такая задача?

- обязательно используйте контроль версий (Git…)

- никогда не пушьте изменения, не проверив что ничего не сломалось

- внимательно изучаем раздел документации про миграцию (что поменялось в такой-то версии)

- если обновление сильно отличается по версиям (например, версия 1.11 обновляется до 5.12), то иногда имеет смысл делать это частями (1.11 > 3.0 > 5.12)



То же самое касается и библиотек/фреймворков, правила всё те же. Чем дальше в проекты, тем веселее 😁 Но самое главное - это быть внимательным. Выручает почти всегда)

#полезности