# app中如何统一同一三方库的不同版本

#### 问题现象

问题一：如何通过配置统一管理各模块依赖的版本？

问题二：如何通过配置统一三方库依赖库的版本？

#### 背景知识

oh-package.json5是项目依赖管理的配置文件，通过如下配置选项可以实现依赖管理：

*   parameterFile：开发者可在项目根目录配置一个参数化文件（json5格式文件），在该文件中维护模块或依赖版本信息，不同模块将根据该文件中的版本进行配置，满足不同构建场景下，开发者快速切换依赖版本的需要。
*   overrides：在项目级别的oh-package.json5（即项目根目录下的oh-package.json5）文件中添加overrides配置，方便将依赖树中的依赖替换为另一个版本。
*   overrideDependencyMap：重写源码模块或三方库的依赖关系。开发者可在工程级oh-package.json5文件中新增overrideDependencyMap配置，在依赖安装时，某个依赖节点的所有直接子依赖替换为对应依赖关系重写文件中配置的依赖项。

#### 解决方案

问题一：基于parameterFile管理依赖版本。

1.  新建parameterFile.json5文件，并配置所需的版本号以及名称。
2.  在工程级oh-package.json5中添加parameterFile关键字，并配置文件路径。
3.  oh-package.json5中使用@param:xxx.xxx配置版本号。

问题二：基于overrides或者overrideDependencyMap管理三方库依赖。

*   通过overrides更改项目中所有对应依赖的版本号。项目存在多个模块，分别依赖foo的1.0.0和1.0.1版本，在工程级oh-package.json5配置"overrides": {"foo": "1.0.1"}，即可将项目中关于foo的依赖更改为1.0.1版本。
*   通过overrideDependencyMap更改指定三方库的依赖配置。项目依赖A模块以及B模块的1.0.0和1.0.1版本，A依赖foo的1.0.1版本，B的两个版本都依赖foo的1.0.0版本。
    1.  新建dep-debug.json5，配置依赖"dependencies": {"foo": "1.0.1"}。
    2.  项目级oh-package.json5添加配置如下：
        *   修改B模块的依赖："overrideDependencyMap": {"B": "D:\\\\overrideDependencyMapTest\\\\dep-debug.json5" }。
        *   修改1.0.1版本B模块的依赖："overrideDependencyMap": {"B@1.0.1": "D:\\\\overrideDependencyMapTest\\\\dep-debug.json5" }。

#### 总结

oh-package.json5是项目依赖管理的配置文件，当前依赖关系能力可以通过配置该文件实现。