違反流行的 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”。

該問題在包含依賴項時未明確綁定到版本號的項目中表現出來。 作為解決方法,建議通過在 Yarn 中添加 '"overrides": {"mini-css-extract-plugin": "2.4.5"}' 或使用命令 " npm i -D --save-exact [電子郵件保護]» 在 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 等包。

來源: opennet.ru

添加評論