跳到主要内容

ohpm publish

发布一个三方库。

命令格式

ohpm publish [options] <har_or_tgz_file>

  • har_or_tgz_file:压缩包路径,可以是 .har 包格式和由 hsp 模块打包出来的 .tgz 包格式,必选参数。
  • ohpm 命令行 1.3.0 之前版本仅支持发布 .har 包,从 1.3.0 版本开始支持发布 .tgz 包。
  • ohpm命令行 5.0.1 版本开始支持发布与下载最大300M的.har/.tgz包。

功能描述

  • 将三方库发布到 OpenHarmony 三方库中心仓,以便可按名称安装它。 发布前,需要完成公钥私钥生成,把公钥上传服务端,并在ohpmrc 文件中配置公仓的发布码和私钥路径。
  • 默认情况下,ohpm 将发布到 OpenHarmony 三方库中心仓,但仍可以通过指定不同的 publish_registry 值(详情可查阅 ohpmrc 章节 中 publish_registry 描述信息),发布到指定的仓库。
  • 如果指定的仓库中已存在三方库名称和版本组合,则发布失败。
  • 一旦三方库以给定的名称和版本发布并审核通过后,该特定名称及对应的版本号将被占用,无法再次使用,即使它已被 ohpm unpublish 下架。

  • 为了保证.har 和 .tgz 包的编译与运行正常,包中的 oh-package.json5 必须包含该包的所有直接依赖,若有依赖通过项目级别的 oh-package.json5 引入,则相应的依赖也必须写入包中对应的 oh-package.json5 中。
  • 请注意debug模式构建的HAR包中含有源码,便于本地调试,请注意代码安全,详细请参考构建HAR
  • 发布包前请务必检查待发布包 oh-package.json5 的配置是否满足要求,具体要求请参考:oh-package.json5 字段说明

发布校验规则

三方库校验规则

  1. ohpm打包的三方库须以.har和.tgz作为其扩展名;

  2. 三方库所有内容须放置在package目录内,且package目录内需包含oh-package.json5配置文件、README.md文件、LICENSE文件和CHANGELOG.md文件,其中oh-package.json5配置文件须包含必选字段(请参阅oh-package.json5文件字段说明);

    README.md文件、LICENSE文件和CHANGELOG.md三个文件在该HAR包发布至OpenHarmony 三方库中心仓时必须包含,且不能为空。

  3. 将package目录压缩为tgz包,并将后缀名改为.har,即可获得三方库的HAR包。

开闭源规则

  1. 开源

    不进行 ArkTS 代码相关编译的,只进行 cpp 代码编译和 OpenHarmony 资源处理,还有模块的部分原始配置文件会被打包。其 oh-package.json5 文件中的 "artifactType" 字段值为 original。

  2. 闭源

    ArkTS 代码会被编译成混淆的 js 和 d.ets 和 d.ts 等声明文件,进行 cpp 代码编译和 OpenHarmony 资源处理,还有模块的部分原始配置文件会被打包。其 oh-package.json5 文件中 "artifactType" 属性值为 obfuscation。此时则检查 oh-package.json5 文件中 "types" 属性中定义的声明文件是否带有扩展名 ".d.ts/.d.ets",且对应路径下存在该文件。若无则进行报错,且不会发布。

Options

publish_id

  • 默认值:""
  • 类型:String

可以在 publish 命令后面配置 --publish_id <id> 参数,指定发布码。

key_path

  • 默认值:""
  • 类型:String

可以在 publish 命令后面配置 --key_path

参数,指定ssh私钥路径。

tag

  • 默认值:无
  • 类型:String
  • 别名:t

可以在 publish 命令后面配置 -t <tag_name>或者 --tag <tag_name> 参数,给将要发布的三方库打上标签。

publish_registry

  • 默认值:""
  • 类型:URL

可以在 publish 命令后面配置 --publish_registry <r> 参数,指定发布仓库地址。如果未指定,默认从配置中获取发布仓库地址。

source_type

  • 默认值:无
  • 类型: String

从ohpm 6.1.1.816版本开始,可以在 publish 命令后配置--source_type <string>参数,指定将要发布的三方库的开闭源类型。如果值为closed,则不校验发布的三方包是否包含 LICENSE 文件,发布的三方库是闭源类型;如果值为open,则校验发布的三方包必须包含 LICENSE 文件,发布的三方库是开源类型。

fetch_timeout

  • 默认值:60000
  • 类型: Number
  • 别名:ft

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

strict_ssl

  • 默认值:true
  • 类型: Boolean

可以在 publish 命令后面配置 --strict_ssl true 参数,校验 https 证书;配置 --strict_ssl false 参数,不校验 https 证书。

log_level

  • 默认值:无
  • 类型: String

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

debug

  • 默认值:false
  • 类型: Boolean

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

use_stream_threshold_size

  • 默认值:无
  • 类型: Number

从ohpm 6.0.2.636版本开始,可以在 publish 命令后配置--use_stream_threshold_size <number>参数,指定流式上传阈值,取值范围:[0, 300],单位mb。当publish三方库的文件体积超过阈值时,将使用流式方式上传;如果仓库不存在流式上传接口,则转为Base64方式上传。

compability_log_level

  • 默认值:无
  • 类型:String

从ohpm 6.0.2.636版本开始,可以在 publish 命令后配置 --compability_log_level <string> 参数,在publish命令时,ohpm会检测oh-package.json5文件中是否配置了兼容性检测需要的所有字段('compatibleSdkVersion', 'compatibleSdkType', 'obfuscated', 'nativeComponents')。如果未配置,则会根据compability_log_level设置的日志等级(info、debug、warn、error)打印提示或报错。详情请见compability_log_level

disallow_nested_package

  • 默认值:false
  • 类型:Boolean

从ohpm 6.0.2.636版本开始,可以在 publish 命令后配置 --disallow_nested_package 参数。在执行publish命令时,会扫描包内是否存在'./'形式配置,且后缀为.har/.tgz格式的依赖。如果存在,则命令执行失败并提示报错信息,详情请见disallow_nested_package

ensure_dependency_include

  • 默认值:false
  • 类型:Boolean

从ohpm 6.0.2.636版本开始,可以在 publish 命令后配置 --ensure_dependency_include 参数,会开启依赖扫描功能,详情请见ensure_dependency_include

cache

  • 默认值:无
  • 类型:string

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

示例

发布工作目录下的三方库,执行以下命令:

ohpm publish publish_test.har

结果示例: