Нарушение обратной совместимости в популярном 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 [email protected]” в 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 и т.д.

Release. Ссылка here.