github.com/KusionStack/kpm@v0.8.4-0.20240326033734-dc72298a30e5/docs/publish_your_kcl_packages-zh.md (about)

     1  # 如何使用 kpm 与他人分享您的 kcl 包
     2  
     3  [kpm](https://github.com/KusionStack/kpm) 是一个用于管理 kcl 包的工具。本文将指导您如何使用 kpm 将您的 kcl 包推送到发布到 OCI Registry 中。kpm 默认使用 [ghcr.io](https://ghcr.io) 作为 OCI Registry, 您可以通过修改 kpm 配置文件来更改默认的 OCI Registry。关于如何修改 kpm 配置文件的信息,请参阅 [kpm oci registry](./kpm_oci-zh.md#kpm-registry)
     4  
     5  下面是一个简单的步骤,指导您如何使用 kpm 将您的 kcl 包推送到 ghcr.io。
     6  
     7  ## 步骤 1:安装 kpm
     8  
     9  首先,您需要在您的计算机上安装 kpm。您可以按照 [kpm 安装文档](https://kcl-lang.io/docs/user_docs/guides/package-management/installation)中的说明进行操作。
    10  
    11  ## 步骤 2:创建一个 ghcr.io 令牌
    12  
    13  如果您使用 kpm 默认的 OCI Registry, 要将 kcl 包推送到 ghcr.io,您需要创建一个用于身份验证的令牌。您可以参考以下文档。
    14  
    15  - [创建 ghcr.io token](https://docs.github.com/zh/authentication/keeping-your-account-and-data-secure/managing-your-personal-access-tokens#creating-a-personal-access-token-classic)
    16  
    17  ## 步骤 3:登录 ghcr.io
    18  
    19  在安装了 kpm 并创建了 ghcr.io 令牌后,您需要使用 kpm 登录 ghcr.io。您可以使用以下命令进行操作:
    20  
    21  ```shell
    22  kpm login -u <USERNAME> -p <TOKEN> ghcr.io
    23  ```
    24  
    25  其中 `<USERNAME>` 是您的 GitHub 用户名,`<TOKEN>` 是您在步骤 2 中创建的令牌。
    26  
    27  关于如何使用 kpm 登录 ghcr.io 的更多信息,请参阅 [kpm login](./kpm_oci-zh.md#kpm-login)。
    28  
    29  ## 步骤 4:推送您的 kcl 包
    30  
    31  现在,您可以使用 kpm 将您的 kcl 包推送到 ghcr.io。
    32  
    33  ### 1. 一个合法的 kcl 包
    34  
    35  首先,您需要确保您推送的内容是符合一个 kcl 包的规范,即必须包含合法的 kcl.mod 和 kcl.mod.lock 文件。
    36  
    37  如果您不知道如何得到一个合法的 `kcl.mod` 和 `kcl.mod.lock`。您可以使用 `kpm init` 命令。
    38  
    39  ```shell
    40  # 创建一个名为 my_package 的 kcl 包
    41  kpm init my_package
    42  ```
    43  
    44  `kpm init my_package` 命令将会为您创建一个新的 kcl 包 `my_package`, 并为这个包创建 `kcl.mod` 和 `kcl.mod.lock` 文件。
    45  
    46  如果您已经有了一个包含 kcl 文件的目录 `exist_kcl_package`,您可以使用以下命令将其转换为一个 kcl 包,并为其创建合法的 `kcl.mod` 和 `kcl.mod.lock`。
    47  
    48  ```shell
    49  # 在 exist_kcl_package 目录下
    50  $ pwd 
    51  /home/user/exist_kcl_package
    52  
    53  # 执行 kpm init 命令来创建 kcl.mod 和 kcl.mod.lock
    54  $ kpm init 
    55  ```
    56  
    57  关于如何使用 kpm init 的更多信息,请参阅 [kpm init](./command-reference-zh/1.init.md)。
    58  
    59  ### 2. 推送 kcl 包
    60  
    61  您可以在 `kcl` 包的根目录下使用以下命令进行操作:
    62  
    63  ```shell
    64  # 在 exist_kcl_package 包的根目录下
    65  $ pwd 
    66  /home/user/exist_kcl_package
    67  
    68  # 推送 kcl 包到默认的 OCI Registry
    69  $ kpm push
    70  ```
    71  
    72  完成上述步骤后,您就成功地将您的 kcl 包推送到了默认的 OCI Registry 中。
    73  关于如何使用 kpm push 的更多信息,请参阅 [kpm push](./kpm_oci-zh.md#kpm-push)。