---
url: /zh/artifact/ohpm.md
description: |
  介绍如何配置和使用 CNB ohpm 制品库，用于存储和分发 鸿蒙（HarmonyOS）OpenHarmony 包，包括凭证配置和包的推送、安装方法。
---
## 前置准备

1. [创建制品库](./intro.md#创建制品库)
2. [获取制品库的地址](./intro.md#获取制品库的地址)
3. [创建令牌](./intro.md#创建访问令牌)

## 本地使用

### 配置凭证

提供两种方式：

#### 命令行配置

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

```bash
ohpm config set registry <REPO_URL>
ohpm config set publish_registry <REPO_URL>
ohpm config set //<REPO_URL_SUFFIX>:_auth=<YOUR_TOKEN>
```

#### 配置文件配置

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

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

```ini
registry=<REPO_URL>
publish_registry=<REPO_URL>
//<REPO_URL_SUFFIX>:_auth=<YOUR_TOKEN>
```

### 拉取制品

使用以下命令拉取，注意替换 `<PACKAGE_NAME>`、`<VERSION>` 和 `<REPO_URL>`：

```bash
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 <HAR_OR_TGZ_FILE> --publish_registry=<REPO_URL>
```

## 云原生构建

### 配置凭证

云原生构建中推荐使用内置环境变量 `CNB_TOKEN`，
替换 `<REPO_URL>` 为制品库地址，
`<REPO_URL_SUFFIX>` 为制品库地址去掉协议前缀。

::: tip 其他令牌方式
如需使用明文令牌替换 `<YOUR_TOKEN>` 为您的令牌，或通过密钥仓库中变量名 `<ENV_NAME>` 引用。
详情请参考 [云原生构建、云原生开发中使用令牌](./intro.md#在云原生构建，云原生开发中使用令牌)。
:::

提供两种方式：

#### 命令行配置

```bash
ohpm config set registry <REPO_URL>
ohpm config set publish_registry <REPO_URL>
ohpm config set //<REPO_URL_SUFFIX>:_auth=${CNB_TOKEN}
```

#### 配置文件配置

在 .ohpmrc 文件粘贴如下内容：

```ini
registry=<REPO_URL>
publish_registry=<REPO_URL>
//<REPO_URL_SUFFIX>:_auth=${CNB_TOKEN}
```

### 拉取制品

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

### 推送制品

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

两种操作均可通过以下 `.cnb.yml` 示例集成到构建流水线（认证配置前置，后续任务直接使用）：

```yaml title=".cnb.yml"
main:
  push:
    - docker:
        image: <ohpm_image>
      stages:
        - name: configure auth
          script:
            - ohpm config set registry <REPO_URL>
            - ohpm config set publish_registry <REPO_URL>
            - ohpm config set //<REPO_URL_SUFFIX>:_auth=${CNB_TOKEN}
        - name: ohpm install
          script: ohpm install <PACKAGE_NAME>@<VERSION>
        - name: ohpm publish
          script: ohpm publish <HAR_OR_TGZ_FILE>
```

> 拉取与推送可按需保留或移除对应步骤，也可拆分到不同流水线中。

## 云原生开发

### 配置凭证

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

### 配置开发镜像

```yaml title=".cnb.yml"
$:
  vscode:
    - docker:
        image: <ohpm_image>
```

### 拉取制品

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

### 推送制品

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

## 更多用法

更多 ohpm 用法，请查阅 [ohpm 官方文档](https://ohpm.openharmony.cn/)。
