已关闭
fix: 将社区版本配置为 peerDependencies 解决 TS 类型检查报错。 #65
zhoukc42创建于 9月3日关闭于 9月8日
fix: 将社区版本配置为 peerDependencies 解决 TS 类型检查报错。 #65
已关闭
共 1 个文件变更+2-1
| @@ -46,7 +46,8 @@ | |||
| 46 | }, | 46 | }, |
| 47 | "peerDependencies": { | 47 | "peerDependencies": { |
| 48 | "react": "*", | 48 | "react": "*", |
| 49 | - "react-native": "*" | 49 | + "react-native": "*", |
| 50 | + "react-native-linear-gradient": "3.0.0-alpha.1" | ||
| 50 | }, | 51 | }, |
| 51 | "publishConfig": { | 52 | "publishConfig": { |
| 52 | "registry": "https://registry.npmjs.org/", | 53 | "registry": "https://registry.npmjs.org/", |
【AI-Review】【严重】【基础代码问题】【代码逻辑错误】peerDependency 版本约束过严导致 npm 7+ 安装失败
● 问题:package.json:50 将 peerDependencies 中的
react-native-linear-gradient指定为"3.0.0-alpha.1"(精确版本号,在 npm semver 中等同于=3.0.0-alpha.1,只接受这一个版本)。经查询 npm registry(https://registry.npmjs.org/react-native-linear-gradient),上游react-native-linear-gradient已发布多个 3.x 预发布版本(3.0.0-alpha.0、3.0.0-alpha.1、3.0.0-beta.0、3.0.0-beta.1、3.0.0-beta.2),dist-tags 中latest指向稳定版2.8.3、next指向3.0.0-beta.2。本包自身harmony.alias为react-native-linear-gradient(package.json:9),要求用户同时安装上游原版以提供 JS 层接口与 TS 类型定义。● 影响:严重。用户在 RN 项目中执行
npm install @react-native-ohos/react-native-linear-gradient时,npm 7+(2020 年 10 月起默认行为)开启严格 peer 依赖检查:若用户已安装或 npm 自动解析到的上游版本不是精确的3.0.0-alpha.1(例如安装了稳定版2.8.3、next 版3.0.0-beta.2、或其他 3.x 预发布版本),npm 将抛出ERESOLVE unable to resolve dependency tree错误并使整个安装失败。这与本 PR 标题"解决 peerDependencies 报错"的目标相反,反而把报错扩大到绝大多数安装场景(仅安装精确 alpha.1 的用户能成功)。● 建议:使用 semver 范围约束替代精确版本号,使 3.x 系列任意预发布版本均可通过 peer 检查。将
"react-native-linear-gradient": "3.0.0-alpha.1"改为"react-native-linear-gradient": "^3.0.0-alpha.1"(接受 3.0.0-alpha.1 及以上 3.x 版本)或"react-native-linear-gradient": ">=3.0.0-alpha.1"。若实际仅验证过 alpha.1 兼容性,可在 README 中明确声明兼容性矩阵,但 peerDependencies 仍应使用范围约束以避免安装失败。