---
url: /zh/artifact/ohpm.md
---
## 前置准备

1. [创建制品库](./intro.md#创建制品库)

2. [获取制品库的地址](./intro.md#获取制品库的地址)

3. [创建令牌](./intro.md#创建访问令牌)

## 本地使用

### 配置凭证

提供两种方式参考
::: tabs
@tab 命令行配置
替换 `<YOUR_TOKEN>` 为您的令牌，`<REPO_URL>` 为制品库地址，`<REPO_URL_SUFFIX>` 为制品库地址去掉协议前缀

```bash
# 示例
# ohpm config set registry https://ohpm.cnb.build/cnb/ohpm-repo/-/packages/
# ohpm config set publish_registry https://ohpm.cnb.build/cnb/ohpm-repo/-/packages/
# ohpm config set //ohpm.cnb.build/cnb/ohpm-repo/-/packages/:_auth=<YOUR_TOKEN>

# 配置拉取仓库
ohpm config set registry <REPO_URL>
# 配置推送仓库
ohpm config set publish_registry <REPO_URL>

ohpm config set //<REPO_URL_SUFFIX>:_auth=<YOUR_TOKEN>
```

@tab 配置文件配置
在项目的 package.json 同一级目录下的.ohpmrc文件粘贴如下内容

替换 `<YOUR_TOKEN>` 为您的令牌，`<REPO_URL>` 为制品库地址，`<REPO_URL_SUFFIX>` 为制品库地址去掉协议前缀

```ini
# 示例
# registry=https://ohpm.cnb.build/cnb/ohpm-repo/-/packages/
# publish_registry=https://ohpm.cnb.build/cnb/ohpm-repo/-/packages/
# //ohpm.cnb.build/cnb/ohpm-repo/-/packages/:_auth=<YOUR_TOKEN>

# 配置拉取仓库
registry=<REPO_URL>
# 配置推送仓库
publish_registry=<REPO_URL>

//<REPO_URL_SUFFIX>:_auth=<YOUR_TOKEN>
```

:::

### 拉取制品

使用如下命令拉取，注意替换 `<PACKAGE_NAME>`，`<VERSION>`，`<REPO_URL>`

```bash
# ohpm install @pura/harmony-utils@1.3.6 --registry=https://ohpm.cnb.build/cnb/ohpm-repo/-/packages/

ohpm install <PACKAGE_NAME>@<VERSION> --registry=<REPO_URL>
```

### 推送制品

1. 初始化 oh-package.json5，注意替换 `<PACKAGE_NAME>` 和 `<VERSION>`

```json
{
  "name": "<PACKAGE_NAME>",
  "version": "<VERSION>",
  "description": "",
  "main": "index.js",
  "author": "",
  "license": "MIT"
}
```

2. 使用命令发布 ohpm 包，注意替换包文件路径 `<HAR_OR_TGZ_FILE>`，制品库地址 `<REPO_URL>`

```bash
# 示例
# ohpm publish library.har --publish_registry=https://ohpm.cnb.build/cnb/ohpm-repo/-/packages/

ohpm publish <HAR_OR_TGZ_FILE>  --publish_registry=<REPO_URL>
```

## 云原生构建

### 配置凭证

云原生构建使用令牌有三种方式，参考[云原生构建，云原生开发中使用令牌](./intro.md#在云原生构建，云原生开发中使用令牌)，以下是具体客户端的使用方式

提供两种方式参考
::: tabs
@tab 命令行配置
替换 `<REPO_URL>` 为制品库地址，`<REPO_URL_SUFFIX>` 为制品库地址去掉协议前缀

```bash
# 示例
# ohpm config set registry https://ohpm.cnb.build/cnb/ohpm-repo/-/packages/
# ohpm config set publish_registry https://ohpm.cnb.build/cnb/ohpm-repo/-/packages/
# ohpm config set //ohpm.cnb.build/cnb/ohpm-repo/-/packages/:_auth=${CNB_TOKEN}

# 配置拉取仓库
ohpm config set registry <REPO_URL>
# 配置推送仓库
ohpm config set publish_registry <REPO_URL>

# 第一种方式 使用内置环境变量 CNB_TOKEN
ohpm config set //<REPO_URL_SUFFIX>:_auth=${CNB_TOKEN}

# 第二种方式 直接使用，替换 <YOUR_TOKEN> 为您的令牌即可
# ohpm config set //<REPO_URL_SUFFIX>:_auth=<YOUR_TOKEN>

# 第三种方式，密钥仓库，替换 <ENV_NAME> 为您密钥仓库的变量
# ohpm config set //<REPO_URL_SUFFIX>:_auth=${<ENV_NAME>}
```

@tab 配置文件配置
在.ohpmrc文件粘贴如下内容，替换 `<REPO_URL>` 为制品库地址，`<REPO_URL_SUFFIX>` 为制品库地址去掉协议前缀

```ini
# 示例
# registry=https://ohpm.cnb.build/cnb/ohpm-repo/-/packages/
# publish_registry=https://ohpm.cnb.build/cnb/ohpm-repo/-/packages/
# //ohpm.cnb.build/cnb/ohpm-repo/-/packages/:_auth=<YOUR_TOKEN>

# 配置拉取仓库
registry=<REPO_URL>
# 配置推送仓库
publish_registry=<REPO_URL>

# 第一种方式 使用内置环境变量 CNB_TOKEN
//<REPO_URL_SUFFIX>:_auth=${CNB_TOKEN}

# 第二种方式 直接使用，替换 <YOUR_TOKEN> 为您的令牌即可
# //<REPO_URL_SUFFIX>:_auth=<YOUR_TOKEN>

# 第三种方式，密钥仓库，替换 <ENV_NAME> 为您密钥仓库的变量
# //<REPO_URL_SUFFIX>:_auth=${<ENV_NAME>}
```

:::

### 拉取制品

替换 `<PACKAGE_NAME>`， `<VERSION>`， 替换 `<REPO_URL>` 为制品库地址，`<REPO_URL_SUFFIX>` 为制品库地址去掉协议前缀

```yml
main:
  push:
    - docker:
        image: <ohpm_image> # 使用您自己的ohpm镜像
      stages:
        - name: ohpm install
          script:
            # 使用 命令行配置凭证 需带上下面两行，使用 配置文件配置凭证 则不需要
            - ohpm config set registry <REPO_URL>      
            - ohpm config set //<REPO_URL_SUFFIX>:_auth=${CNB_TOKEN}

            - ohpm install <PACKAGE_NAME>@<VERSION> --registry=<REPO_URL>
```

### 推送制品

替换`<HAR_OR_TGZ_FILE>` 为包文件路径，`<REPO_URL>` 为制品库地址，`<REPO_URL_SUFFIX>` 为制品库地址去掉协议前缀

```yml
main:
  push:
    - docker:
        image: <ohpm_image> # 使用您自己的ohpm镜像
      stages:
        - name: ohpm publish
          script:
            # 使用 命令行配置凭证 需带上下面两行，使用 配置文件配置凭证 则不需要
            - ohpm config set publish_registry <REPO_URL>      
            - ohpm config set //<REPO_URL_SUFFIX>:_auth=${CNB_TOKEN}

            - ohpm publish <HAR_OR_TGZ_FILE> --publish_registry=<REPO_URL>
```

## 云原生开发

### 配置凭证

与 [云原生构建 配置凭证](./ohpm.md#配置凭证-1) 相同

### 配置开发镜像

```yml
$:
  vscode:
    - docker:
        image: <ohpm_image> # 使用您自己的ohpm镜像
```

### 拉取制品

与 [本地开发 拉取制品](./ohpm.md#拉取制品) 相同

### 推送制品

与 [本地开发 推送制品](./ohpm.md#推送制品) 相同

## 更多用法

更多 ohpm 用法，请查阅 ohpm 官方文档
