Порушення зворотної сумісності у популярному 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 [захищено електронною поштою]» у NPM.

Серед постраждалих опинилися користувачі пакету create-react-app, що розвивається компанією Facebook, що підключає 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 і т.д.

Джерело: opennet.ru

Додати коментар або відгук