W repozytorium NPM odnotowano kolejną masową awarię w projektach z powodu problemów w nowej wersji jednej z popularnych zależności. Źródłem problemów była nowa wersja pakietu mini-css-extract-plugin 2.5.0, przeznaczonego do wyodrębniania CSS do osobnych plików. Pakiet ten ma ponad 10 milionów pobrań tygodniowo i jest używany jako bezpośrednia zależność w ponad 7 tysiącach projektów.
W nowej wersji wprowadzono zmiany, które naruszały kompatybilność wsteczną przy imporcie biblioteki, co prowadziło do błędu podczas próby użycia wcześniej dozwolonej i opisanej w dokumentacji konstrukcji „const MiniCssExtractPlugin = require(‘mini-css-extract-plugin’)”, którą przy przejściu na nową wersję należało zastąpić „const MiniCssExtractPlugin = require(„mini-css-extract-plugin”).default”.
Problem wystąpił w projektach, które nie miały wyraźnego powiązania z numerem wersji przy dołączaniu zależności. Jako obejście problemu zalecane jest ustalenie powiązania z poprzednią wersją 2.4.5 poprzez dodanie „overrides”: {„mini-css-extract-plugin”: „2.4.5”} do Yarn lub wykorzystując polecenie „npm i -D —save-exact mini-css-extract-plugin@2.4.5” w NPM.
Wśród poszkodowanych znaleźli się użytkownicy pakietu create-react-app rozwijanego przez firmę Facebook, który dołącza mini-css-extract-plugin jako zależność. Z powodu braku powiązania z numerem wersji mini-css-extract-plugin, próby uruchomienia create-react-app kończyły się błędem „TypeError: MiniCssExtractPlugin is not a constructor”. Problem ten dotknął również pakiety @wordpress/scripts, @auth0/auth0-spa-js, sql-formatter-gui, LedgerSMB, vip-go-mu-plugins, cybros, vue-cli, chore itp.
Źródło: opennet.ru
