Нарушение обратной совместимости в популярном NPM-пакете привело к сбоям в различных проектах

В репозитории NPM наблюдается очередной массовый сбой в работе проектов из-за возникновения проблем в новой версии одной из популярных зависимостей. Источником проблем стал новый выпуск пакета mini-css-extract-plugin 2.5.0, предназначенного для извлечения CSS в отдельные файлы. Пакет насчитывает более 10 млн еженедельных загрузок и используется в качестве прямой зависимости у более чем 7 тысяч проектов.

В новой версии были внесены изменения, нарушающие обратную совместимость при импорте библиотеки и приводившие к выводу ошибки при попытке использования ранее допустимой и описанной в документации конструкции «const MiniCssExtractPlugin = require ('mini-css-extract-plugin')», которую при переходе на новую версию потребовалось заменить на «const MiniCssExtractPlugin = require («mini-css-extract-plugin»).default».

Проблема проявилась в проектах, не применяющих явную привязку к номеру версии при подключении зависимостей. В качестве обходного пути решения проблемы рекомендовано зафиксировать привязку к прошлой версии 2.4.5 через добавление '«overrides»: {«mini-css-extract-plugin»:»2.4.5»}' в Yarn или использовав команду «npm i -D --save-exact mini-css-extract-plugin@2.4.5» в NPM.

В числе пострадавших оказались пользователи развиваемого компанией Facebook пакета create-react-app, подключающего mini-css-extract-plugin в качестве зависимости. Из-за отсутствия привязки к номеру версии mini-css-extract-plugin попытки запуска create-react-app завершались выводом ошибки «TypeError: MiniCssExtractPlugin is not a constructor». Проблема также затронула пакеты @wordpress/scripts, @auth0/auth0-spa-js, sql-formatter-gui, LedgerSMB, vip-go-mu-plugins, cybros, vue-cli, chore и т.д.



Источник: http://www.opennet.ru/opennews/art.shtml? num=56517

©  OpenNet