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 文件中锁定的版本。
-
ohpm install
将依赖项安装到本地 oh_modules 文件夹中,并将所有依赖项作为 dependencies,写入 oh-package.json5 文件。
-
ohpm install <folder>
安装本地文件夹,则默认会创建一个软链接指向该文件夹。
示例:
ohpm install ../folder -
ohpm install <har file>
安装压缩包,请注意压缩包的要求:
- 文件名必须使用 .tar, .tar.gz, .tgz, .har 作为扩展名;
- 压缩包里面包含子文件 package;
- 子文件夹 package 下面必须包含 oh-package.json5 文件,且配置文件中必须有 name 和 version 字段。
示例:
ohpm install ./package.har
Options
install_all
- 默认值:true
- 类型:Boolean
- 别名:all
可以在 install 命令后面配置 --all或者--install_all 参数,安装您项目下所有模块在其 oh-package.json5 中配置的全部依赖项。
save-dynamic
- 默认值:false
- 类型:Boolean
可以在 install 命令后面配置 --save-dynamic 参数,安装的三方库信息将会写入 oh-package.json5 文件的 dynamicDependencies 中。
save-dev
- 默认值:false
- 类型:Boolean
可以在 install 命令后面配置 --save-dev 参数,安装的三方库信息将会写入 oh-package.json5 文件的 devDependencies 中。
save-prod
- 默认值:true
- 类型:Boolean
可以在 install 命令后面配置 --save-prod 参数,安装的三方库信息将会写入 oh-package.json5 文件的 dependencies 中,这是 ohpm 的默认行为。
no-save
- 默认值:false
- 类型:Boolean
可以在 install 命令后面配置 --no-save 参数,安装的三方库信息将不会写入 oh-package.json5 文件中。
prefix
- 默认值:""
- 类型: string
可以在 install 命令后面配置 --prefix <string> 参数,用来指定包的根目录,该目录下必须存在 oh-package.json5 文件。
parameterFile
- 默认值:无
- 类型: string
- 别名:pf
可以在 install 命令后面配置 --pf <string> 或者 --parameterFile <string> 参数,用来指定参数化配置文件地址。使用该命令前需保证项目级别的oh-package.json5中已配置parameterFile参数。
registry
- 默认值:""
- 类型:URL
可以在 install 命令后面配置 --registry <registry> 参数,指定仓库地址;如果没有指定,默认从配置中获取仓库地址。
fetch_timeout
- 默认值:60000
- 类型: Number
- 别名:ft
可以在 install 命令后面配置 --ft <number> 或者 --fetch_timeout <number> 参数,设置操作的超时时间,如果没有指定,默认超时时间为60000ms。
strict_ssl
- 默认值:true
- 类型: Boolean
可以在 install 命令后面配置 --strict_ssl true 参数,校验 https 证书;配置 --strict_ssl false 参数,不校验 https 证书。
max_concurrent
- 默认值:50
- 类型: Number
- 别名:mc
可以在 install 命令后面配置 --mc <number> 或者 --max_concurrent <number> 参数,设置最大活动并发请求数(即ohpm操作期间任何时间的最大网络请求数),如果没有指定,默认最大并发请求数为50次。
retry_times
- 默认值:1
- 类型: Number
- 别名:rt
可以在 install 命令后面配置 --rt <number> 或者 --retry_times <number> 参数,设置操作失败前的最大重试次数,如果没有指定,默认最大重试次数为1次。
retry_interval
- 默认值:1000
- 类型: Number
- 别名:ri
可以在 install 命令后面配置 --ri <number> 或者 --retry_interval <number> 参数,设置重试失败前的等待时间,如果没有指定,默认等待时间为1000ms。
experimental-concurrently-safe
- 默认值:true
- 类型:Boolean
可以在 install 命令后面配置 --experimental-concurrently-safe 参数,并发安全地安装依赖。这是一个实验性选项。
target_path
- 默认值:无
- 类型:string
可以在 install 命令后面配置 --target_path <string> 参数,用来指定在特定目标产物target语境下各模块的依赖配置文件(oh-package.json5)的路径。在执行ohpm install时,ohpm会优先安装<target_path>/<moduleName>/oh-package.json5文件中依赖。详情参见target_path。
log_level
- 默认值:无
- 类型: String
从ohpm 6.0.2.636版本开始,可以在 install 命令后配置--log_level <string>参数,指定执行当前命令的日志级别(info、debug、warn、error),如果未指定该值则日志级别为.ohpmrc中配置的log_level的级别。
debug
- 默认值:false
- 类型: Boolean
从ohpm 6.0.2.636版本开始,可以在命令后配置--debug参数,指定执行当前命令的日志级别为debug,该配置仅在当前命令行生效,不修改.ohpmrc中的日志级别,如果未指定该值则日志级别为.ohpmrc中配置的log_level的级别。
lockfile_stable_order
- 默认值:false
- 类型:Boolean
从ohpm 6.0.2.636版本开始,可以在 install 命令后面配置 --lockfile_stable_order 参数,当oh-package.json5文件未变更时,当前已生成的oh-package-lock.json5各字段内容不变。
odm_r2_project_root
- 默认值:false
- 类型:Boolean
从ohpm 6.0.2.636版本开始,可以在 install 命令后面配置 --odm_r2_project_root 参数。当存在overrideDependencyMap配置,且其配置项对应的配置文件内存在相对路径的依赖配置时,ohpm会基于工程根路径解析和查询相对路径,详情参见odm_r2_project_root。
enable_cross_process_lock
- 默认值:false
- 类型:Boolean
从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,使多个命令以串行的方式运行。
resolve_conflict_strict
- 默认值:false
- 类型:Boolean
从ohpm 6.0.2.636版本开始,可以在 install 命令后面配置 --resolve_conflict_strict 参数,ohpm会按照严格模式处理依赖版本冲突,详情参见resolve_conflict_strict。
resolve_conflict
- 默认值:false
- 类型:Boolean
从ohpm 6.0.2.636版本开始,可以在 install 命令后面配置 --resolve_conflict 参数,ohpm会自动处理依赖版本冲突,详情参见resolve_conflict。
cache
- 默认值:无
- 类型:String
从ohpm 6.0.2.636版本开始,可以在 install 命令后面配置 --cache <string> 参数,设置缓存路径。
示例
安装 lottie 三方库,执行以下命令:
ohpm install @ohos/lottie
结果示例:
oh_modules
ohpm 1.0.0~1.3.0
使用 ohpm 安装时,项目中各 Module 的依赖项被统一安装在 Module 根目录下的 oh_modules 目录中,Module 中所有直接依赖和间接依赖都以平铺的方式存储在 oh_modules 目录下的 .ohpm 目录中,Module 的直接依赖则以软链接的方式添加进 oh_modules 文件夹的根目录中。因此,相同依赖项只会安装一次,从而减少磁盘使用空间,加快安装速度。
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。