违反流行的 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

添加评论