目录

ohpm install

安装三方库。

命令格式

ohpm install [options] [[<@group>/]<pkg>[@<version> | @tag:<tag>]] ...
ohpm install [options] <folder> 
ohpm install [options] <har file>
alias: i
  • @group:三方库的命名空间,可选。
  • pkg:三方库名称,可选;当 install 后面没有指定三方库名称时,会根据当前目录下 oh-package.json5 定义的依赖关系进行全量安装。
  • version:三方库的版本号,可选。
  • tag:三方库的标签,标签会标记三方库的某个版本号,可选。

功能描述

用于安装指定组件或 oh-package.json5 文件中所有的依赖。如果存在 oh-package-lock.json5 文件,安装将取决于 oh-package-lock.json5 文件中锁定的版本。

Options

[h2]install_all

可以在install命令后面不配置参数、配置--all或者--install_all 参数,安装您项目下所有模块在其oh-package.json5中配置的全部依赖项。

从ohpm 26.0.0.630版本开始,如无需安装,可配置--no-install_all参数。

[h2]save-dynamic

可以在 install 命令后面配置 --save-dynamic 参数,安装的三方库信息将会写入 oh-package.json5 文件的 dynamicDependencies 中。

[h2]save-dev

可以在 install 命令后面配置 --save-dev 参数,安装的三方库信息将会写入 oh-package.json5 文件的 devDependencies 中。

[h2]save-prod

可以在 install 命令后面配置 --save-prod 参数,安装的三方库信息将会写入 oh-package.json5 文件的 dependencies 中,这是 ohpm 的默认行为。

[h2]no-save

可以在install命令后面配置--no-save参数,安装的三方库信息将不会写入 oh-package.json5 文件中。不配置参数时,安装的三方库信息将写入oh-package.json5文件中。

[h2]prefix

可以在 install 命令后面配置 --prefix <string> 参数,用来指定包的根目录,该目录下必须存在 oh-package.json5 文件。

[h2]parameterFile

可以在 install 命令后面配置 --pf <string> 或者 --parameterFile <string> 参数,用来指定参数化配置文件地址。使用该命令前需保证项目级别的oh-package.json5中已配置parameterFile参数。

[h2]registry

可以在 install 命令后面配置 --registry <registry> 参数,指定仓库地址;如果没有指定,默认从配置中获取仓库地址。

[h2]fetch_timeout

可以在 install 命令后面配置 --ft <number> 或者 --fetch_timeout <number> 参数,设置操作的超时时间,如果没有指定,默认超时时间为60000ms。

[h2]strict_ssl

在install命令后面不配置参数、配置--strict_ssl或--strict_ssl true参数时,开启校验HTTPS证书。

从ohpm 26.0.0.630版本开始,如需关闭校验,可配置--no-strict_ssl或--strict_ssl false参数,推荐使用--no-strict_ssl参数。

[h2]max_concurrent

可以在 install 命令后面配置 --mc <number> 或者 --max_concurrent <number> 参数,设置最大活动并发请求数(即ohpm操作期间任何时间的最大网络请求数),如果没有指定,默认最大并发请求数为50次。

[h2]retry_times

可以在 install 命令后面配置 --rt <number> 或者 --retry_times <number> 参数,设置操作失败前的最大重试次数,如果没有指定,默认最大重试次数为1次。

[h2]retry_interval

可以在 install 命令后面配置 --ri <number> 或者 --retry_interval <number> 参数,设置重试失败前的等待时间,如果没有指定,默认等待时间为1000ms。

[h2]experimental-concurrently-safe

可以在 install 命令后面配置 --experimental-concurrently-safe 参数,并发安全地安装依赖。这是一个实验性选项。

[h2]target_path

可以在 install 命令后面配置 --target_path <string> 参数,用来指定在特定目标产物target语境下各模块的依赖配置文件(oh-package.json5)的路径。在执行ohpm install时,ohpm会优先安装<target_path>/<moduleName>/oh-package.json5文件中的依赖。详情参见target_path。

[h2]log_level

从ohpm 6.0.2.636版本开始,可以在 install 命令后配置--log_level <string>参数,指定执行当前命令的日志级别(info、debug、warn、error),如果未指定该值则日志级别为.ohpmrc中配置的log_level的级别。

[h2]debug

从ohpm 6.0.2.636版本开始,可以在命令后配置--debug参数,指定执行当前命令的日志级别为debug,该配置仅在当前命令行生效,不修改.ohpmrc中的日志级别,如果未指定该值则日志级别为.ohpmrc中配置的log_level的级别。

[h2]lockfile_stable_order

从ohpm 6.0.2.636版本开始,可以在 install 命令后面配置 --lockfile_stable_order 参数,当oh-package.json5文件未变更时,当前已生成的oh-package-lock.json5各字段内容不变。

[h2]odm_r2_project_root

从ohpm 6.0.2.636版本开始,可以在 install 命令后面配置 --odm_r2_project_root 参数。当存在overrideDependencyMap配置,且其配置项对应的配置文件内存在相对路径的依赖配置时,ohpm会基于工程根路径解析和查询相对路径,详情参见odm_r2_project_root。

[h2]enable_cross_process_lock

从ohpm 6.0.2.636版本开始,可以在 install 命令后面配置 --enable_cross_process_lock 参数,由于oh_modules目录结构限制,ohpm不支持在同一个工程下并行运行多个ohpm install、ohpm update或ohpm uninstall命令。若需要在同一个工程下执行多个ohpm install、ohpm update或ohpm uninstall命令,可将该配置设置为true,使多个命令以串行的方式运行。

[h2]resolve_conflict_strict

从ohpm 6.0.2.636版本开始,可以在 install 命令后面配置 --resolve_conflict_strict 参数,ohpm会按照严格模式处理依赖版本冲突,详情参见resolve_conflict_strict。

[h2]resolve_conflict

从ohpm 6.0.2.636版本开始,可以在 install 命令后面不配置参数或配置--resolve_conflict参数,ohpm会自动处理依赖版本冲突,详情参见resolve_conflict。

从ohpm 26.0.0.630版本开始,如无需自动处理时,配置--no-resolve_conflict参数。

[h2]cache

从ohpm 6.0.2.636版本开始,可以在 install 命令后面配置 --cache <string> 参数,设置缓存路径。

[h2]auto_skip_install

从ohpm 26.0.0.410版本开始,可以在 install 命令后面配置 --auto_skip_install参数,设置是否需要校验跳过本次安装,详情参见auto_skip_install。

[h2]metadata_cache

从ohpm 26.0.0.410版本开始,可以在 install 命令后面配置 --metadata_cache 参数,设置是否读取oh-install-meta.json5文件内的缓存元数据和~/.ohpm/cache/metadata下的元数据缓存文件,详情参见metadata_cache。

[h2]symlink_for_local_dep

从ohpm 26.0.0.630版本开始,可以在install命令后面配置--symlink_for_local_dep参数,设置后会对本地HAR依赖解压后的路径,创建软链接。详情参见symlink_for_local_dep。

示例

安装 lottie 三方库,执行以下命令:

ohpm install @ohos/lottie

结果示例:

oh_modules

[h2]ohpm 1.0.0~1.3.0

使用 ohpm 安装时,项目中各 Module 的依赖项被统一安装在 Module 根目录下的 oh_modules 目录中,Module 中所有直接依赖和间接依赖都以平铺的方式存储在 oh_modules 目录下的 .ohpm 目录中,Module 的直接依赖则以软链接的方式添加进 oh_modules 文件夹的根目录中。因此,相同依赖项只会安装一次,从而减少磁盘使用空间,加快安装速度。

[h2]ohpm 1.4.x

ohpm 客户端从 1.4.0 版本开始,同一项目下所有 Module 的依赖都会被统一安装在项目根目录下的 oh_modules 目录中,同时会在项目各 Module 根目录下的 oh_modules 中生成该 Module 的直接依赖的软链接,这些软链接会指向项目根目录下 oh_modules 中的 .ohpm 目录下依赖实际存储目录。

target_path

为了支持在构建过程中针对不同的产物定制不同的依赖,Hvigor会在构建时根据目标产物target为各模块自动生成定制的依赖配置文件(oh-package.json5),开发者可以在ohpm install时使用target_path选项来指定在特定目标产物target语境下各模块的依赖配置文件(oh-package.json5)的路径。

ohpm会优先安装<target_path>/moduleName/oh-package.json5文件中配置的依赖,并在<project_root>/moduleName下生成对应的oh-package-<targetName>-lock.json5文件。当指定target_path时,默认会开启依赖版本冲突自动处理功能,在依赖安装完成后,ohpm还会根据实际安装的依赖版本在<target_path>/resolve-conflict/moduleName目录下生成新的oh-package.json5文件。

target_path目录结构示例:

+---default                   // <targetName>默认为default
|   |   dependencyMap.json5   // 记录在特定target语境下的各模块依赖配置文件路径
|   +---module1               // 在特定target语境下某模块的依赖配置文件的存储目录,与原模块根目录同名
|   |       oh-package.json5  // 在特定target语境下某模块依赖配置文件
|   +---module2
|   |       oh-package.json5
|   |   oh-package.json5      // 在特定target语境下生成的工程级依赖配置文件

dependencyMap.json5内容示例:

{
  targetName: "default",
  rootDependency: "./oh-package.json5",
  dependencyMap: {
       "module1": "./module1/oh-package.json5",
       "module2": "./module2/oh-package.json5"
  }
}

ohpm install指定target_path时依赖配置优先级说明:

1、<target_path>/dependencyMap.json5中rootDependency配置的oh-package.json5的优先级高于<project_root>/oh-package.json5。

2、.ohpmrc中projectPackageJson指定的项目级配置文件中overrides、overrideDependencyMap配置优先级同时高于<target_path>/dependencyMap.json5中rootDependency配置的oh-package.json5中对应配置 和 <project_root>/oh-package.json5中对应配置。

3、<target_path>/moduleName/oh-package.json5的优先级高于overrideDependencyMap中的依赖配置文件。

4、overrides中的依赖版本优先级高于<target_path>/moduleName/oh-package.json5中对应的依赖版本。

仅当<target_path>/dependencyMap.json5中targetName的值不为空且不等于'default'时,<project_root>/moduleName目录下生成的lock文件名才会变更为:oh-package-targetName-lock.json5。