Einbruch der RĂŒckwĂ€rtskompatibilitĂ€t in einem beliebten NPM-Paket fĂŒhrte zu AusfĂ€llen in verschiedenen Projekten

Im NPM-Repository gibt es einen weiteren massiven Ausfall von Projekten aufgrund von Problemen in einer neuen Version eines der beliebten AbhÀngigkeiten. Die Quelle der Probleme ist die neue Version des Pakets mini-css-extract-plugin 2.5.0, das zum Extrahieren von CSS in separate Dateien gedacht ist. Das Paket hat mehr als 10 Millionen wöchentliche Downloads und wird als direkte AbhÀngigkeit in mehr als 7.000 Projekten verwendet.

In der neuen Version wurden Änderungen vorgenommen, die die AbwĂ€rtskompatibilitĂ€t beim Import der Bibliothek verletzten und zu einem Fehler fĂŒhrten, wenn versucht wurde, die zuvor erlaubte und in der Dokumentation beschriebene Konstruktion „const MiniCssExtractPlugin = require(‘mini-css-extract-plugin’)“ zu verwenden, die beim Wechsel zur neuen Version durch „const MiniCssExtractPlugin = require(„mini-css-extract-plugin“).default“ ersetzt werden musste.

Das Problem trat in Projekten auf, die keine explizite Versionsbindung beim Einbinden von AbhĂ€ngigkeiten verwendeten. Als Workaround wird empfohlen, die Bindung an die frĂŒhere Version 2.4.5 zu fixieren, indem ‘»overrides»: {«mini-css-extract-plugin»: «2.4.5»}’ in Yarn hinzugefĂŒgt oder der Befehl „npm i -D —save-exact mini-css-extract-plugin@2.4.5“ in NPM verwendet wird.

Zu den Betroffenen gehören Benutzer des von Facebook entwickelten Pakets create-react-app, das mini-css-extract-plugin als AbhĂ€ngigkeit einbindet. Aufgrund der fehlenden Bindung an die Versionsnummer mini-css-extract-plugin endeten Versuche, create-react-app zu starten, mit dem Fehler „TypeError: MiniCssExtractPlugin is not a constructor“. Das Problem betraf auch die Pakete @wordpress/scripts, @auth0/auth0-spa-js, sql-formatter-gui, LedgerSMB, vip-go-mu-plugins, cybros, vue-cli, chore usw.

Quelle: opennet.ru

60GB SSD 8Gb DDR4