Populaarse NPM-paketi tagasiühilduvuse rikkumine põhjustab erinevates projektides kokkujooksmisi

NPM-i hoidlas on näha järjekordset ulatuslikku projekti krahhi populaarse sõltuvuse uue versiooni probleemi tõttu. Probleemide allikaks oli paketi mini-css-extract-plugin 2.5.0 uus väljalase, mis on loodud CSS-i eraldamiseks eraldi failidesse. Paketil on üle 10 miljoni nädalase allalaadimise ja seda kasutatakse otsese sõltuvusena enam kui 7 projekti jaoks.

Uues versioonis tehti muudatusi, mis rikkusid tagasiühilduvust teegi importimisel ja tõid kaasa vea, kui üritati kasutada dokumentatsioonis kirjeldatud varem kehtinud konstruktsiooni "const MiniCssExtractPlugin = request('mini-css-extract-plugin')". , mis uuele versioonile üleminekul tuli asendada tekstiga "const MiniCssExtractPlugin = request("mini-css-extract-plugin").default".

Probleem avaldus projektides, mis ei seo sõltuvuste kaasamisel sõnaselgelt versiooninumbriga. Lahendusena on soovitatav parandada sidumine eelmise versiooniga 2.4.5, lisades Yarnisse ""alistades": {"mini-css-extract-plugin": "2.4.5"}' või kasutades käsku " npm i -D --salvesta-täpne [meiliga kaitstud]» NPM-is.

Ohvrite hulgas olid Facebooki välja töötatud loo-reageeri-rakenduse paketi kasutajad, mis sisaldab sõltuvusena pistikprogrammi mini-css-extract-plugin. Mini-css-extract-plugin versiooninumbriga sidumise puudumise tõttu lõppesid loomise-react-rakenduse käivitamise katsed veaga "TypeError: MiniCssExtractPlugin ei ole konstruktor". Probleem puudutas ka pakette @wordpress/scripts, @auth0/auth0-spa-js, sql-formatter-gui, LedgerSMB, vip-go-mu-plugins, cybros, vue-cli, chore jne.

Allikas: opennet.ru

Lisa kommentaar