github.com/KusionStack/kpm@v0.8.4-0.20240326033734-dc72298a30e5/README-zh.md (about) 1 <h1 align="center">Kpm: KCL 包管理器</h1> 2 3 <p align="center"> 4 <a href="./README.md">English</a> | <a href="./README-zh.md">简体中文</a> 5 </p> 6 <p align="center"> 7 <a href="#introduction">介绍</a> | <a href="#installation">安装</a> | <a href="#quick-start">快速开始</a> 8 </p> 9 10 <p align="center"> 11 <img src="https://coveralls.io/repos/github/KusionStack/kpm/badge.svg"> 12 <img src="https://img.shields.io/badge/license-Apache--2.0-green"> 13 <img src="https://img.shields.io/badge/PRs-welcome-brightgreen"> 14 </p> 15 16 # 注意 ! 17 18 KPM CLI 将在 v0.8.0 版本后被弃用,并且 KPM CLI 将被 KCL CLI 替代 - https://github.com/kcl-lang/cli. 19 20 受到影响的部分如下所示: 21 22 ``` 23 kpm 24 ├── pkg 25 │ ├── api 26 │ ├── client 27 │ ├── cmd # KPM CLI 将在 v0.8.0 版本后被弃用. 28 │ ├── constants 29 │ ├── env 30 │ ├── errors 31 │ ├── git 32 │ ├── oci 33 │ ├── opt 34 │ ├── package 35 │ ├── reporter 36 │ ├── runner 37 │ ├── semver 38 │ ├── settings 39 │ ├── utils 40 │ └── version 41 ├── scripts 42 ├── test 43 │ └── e2e # KPM CLI 的 e2e 测试将在 v0.8.0 版本后被弃用. 44 ├── ...... 45 ``` 46 47 ## 介绍 48 49 `kpm` 是 KCL 包管理器。`kpm` 会下载您的 KCL 包的依赖项、编译您的 KCL 包、制作可分发的包并将其上传到 KCL 包的仓库中。 50 51 ## 安装 52 53 ### 安装 KCL 54 55 `kpm` 将调用 [KCL 编译器](https://github.com/KusionStack/KCLVM) 来编译 KCL 程序。在使用 `kpm` 之前,您需要确保 KCL 编译器 已经成功安装。 56 57 [如需了解如何安装 KCL 的更多信息,请参考此处。](https://kcl-lang.io/docs/user_docs/getting-started/install) 58 59 使用以下命令来确保您已成功安装 `KCL`。 60 61 ```shell 62 kcl -V 63 ``` 64 65 ### 安装 `kpm` 66 67 #### 使用 `go install` 安装 68 69 您可以使用 `go install` 命令安装 `kpm`。 70 71 ```shell 72 go install kcl-lang.io/kpm@latest 73 ``` 74 75 如果您在执行完上述命令后,使用 `kpm` 时,无法找到命令 `kpm` 请参考: 76 77 - [go install 安装后找不到命令。](#q-我在使用go-install安装kpm后出现了command-not-found的错误) 78 79 #### 从 Github release 页面手动安装 80 81 您也可以从 Github release 中获取 `kpm` ,并将 `kpm` 的二进制文件路径设置到环境变量 PATH 中。 82 83 ```shell 84 # KPM_INSTALLATION_PATH 是 `kpm` 二进制文件的所在目录. 85 export PATH=$KPM_INSTALLATION_PATH:$PATH 86 ``` 87 88 请使用以下命令以确保您成功安装了 `kpm`。 89 90 ```shell 91 kpm --help 92 ``` 93 94 如果你看到以下输出信息,那么你已经成功安装了 `kpm`,可以继续执行下一步操作。 95 96 <img src="./docs/gifs/kpm_help.gif" width="600" align="center" /> 97 98 ## 快速开始 99 100 ### 初始化一个空的 KCL 包 101 102 使用 `kpm init` 命令创建一个名为 `my_package` 的 kcl 程序包, 并且在我们创建完成一个名为 `my_package` 的包后,我们需要通过命令 `cd my_package` 进入这个包来进行后续的操作。 103 104 ```shell 105 kpm init my_package 106 ``` 107 108 <img src="./docs/gifs/kpm_init.gif" width="600" align="center" /> 109 110 `kpm` 将会在执行 `kpm init my_package` 命令的目录下创建两个默认的配置文件 `kcl.mod` 和 `kcl.mod.lock`。 111 112 ```shell 113 - my_package 114 |- kcl.mod 115 |- kcl.mod.lock 116 |- # 你可以直接在这个目录下写你的kcl程序。 117 ``` 118 119 `kcl.mod.lock` 是 `kpm` 用来固定依赖版本的文件,是自动生成的,请不要人工修改这个文件。 120 121 `kpm` 将会为这个新包创建一个默认的 `kcl.mod`。如下所示: 122 123 ```shell 124 [package] 125 name = "my_package" 126 edition = "0.0.1" 127 version = "0.0.1" 128 ``` 129 130 ### 为 KCL 包添加依赖 131 132 然后,您可以通过 `kpm add` 命令来为您当前的库添加一个外部依赖。 133 134 如下面的命令所示,为当前包添加一个版本号为 `1.27` 并且名为 `k8s` 的依赖包。 135 136 ```shell 137 kpm add k8s:1.27 138 ``` 139 140 <img src="./docs/gifs/kpm_add_k8s.gif" width="600" align="center" /> 141 142 `kpm` 会为您将依赖添加到 kcl.mod 文件中. 143 144 ```shell 145 [package] 146 name = "my_package" 147 edition = "0.0.1" 148 version = "0.0.1" 149 150 [dependencies] 151 k8s = "1.27" # The dependency 'k8s' with version '1.27' 152 ``` 153 154 ### 编写一个程序使用包 `konfig` 中的内容 155 156 在当前包中创建 `main.k`。 157 158 ```shell 159 - my_package 160 |- kcl.mod 161 |- kcl.mod.lock 162 |- main.k # Your KCL program. 163 ``` 164 165 并且将下面的内容写入 `main.k` 文件中。 166 167 ```kcl 168 # 导入并使用外部依赖 `k8s` 包中的内容。 169 import k8s.api.core.v1 as k8core 170 171 k8core.Pod { 172 metadata.name = "web-app" 173 spec.containers = [{ 174 name = "main-container" 175 image = "nginx" 176 ports = [{containerPort = 80}] 177 }] 178 } 179 180 ``` 181 182 ### 使用 `kpm` 编译 kcl 包 183 184 你可以使用 kpm 编译刚才编写的 `main.k` 文件, 得到编译后的结果。 185 186 ```shell 187 kpm run 188 ``` 189 190 <img src="./docs/gifs/kpm_run.gif" width="600" align="center" /> 191 192 ## OCI Registry 的支持 193 194 从 kpm v0.2.0 版本开始,kpm 支持通过 OCI Registries 保存和分享 KCL 包。 195 196 了解更多如何在 kpm 中使用,查看 [OCI registry 支持](./docs/kpm_oci-zh.md). 197 198 ## 常见问题 (FAQ) 199 200 ##### Q: 我在使用 `go install` 安装 `kpm` 后,出现了 `command not found` 的错误。 201 202 A: `go install` 默认会将二进制文件安装到 `$GOPATH/bin` 目录下,您需要将 `$GOPATH/bin` 添加到环境变量 `PATH` 中。 203 204 ## 了解更多 205 206 - [OCI registry 支持](./docs/kpm_oci-zh.md). 207 - [如何使用 kpm 与他人分享您的 kcl 包](./docs/publish_your_kcl_packages-zh.md) 208 - [如何使用 kpm 在 docker.io 上与他人分享您的 kcl 包](./docs/publish_to_docker_reg-zh.md) 209 - [kpm 命令参考](./docs/command-reference-zh/index.md) 210 - [kcl.mod: KCL 包清单文件](./docs/kcl_mod-zh.md) 211 - [如何使用 kpm 通过 github action 来推送您的 kcl 包](./docs/push_by_github_action-zh.md) 212 - [发布 KCL 包到官方 Registry](./docs/publish_pkg_to_ah-zh.md)