使用第三方包
包仓库
目前只支持发布在github上的包,包仓库索引地址
每个包的全名应是 发布者/包名,例如 bill-mark/shuxue。导入、添加、删除时都要写全名。
添加依赖
在项目里执行:
bash
cpro tianjia bill-mark/shuxue@0.1.4- 必须写版本号
- 会把依赖写进
cpro.json,并立即下载安装
cpro.json 里会多出这一条:
json
{
"yilai": {
"bill-mark/shuxue": "0.1.4"
}
}也可以直接改 cpro.json,然后执行 cpro anzhuang 安装。
使用
第三方包只能按名字导入,要写全名:
cpro
daoru { int_jia } laizi "bill-mark/shuxue"
rukou() {
bl a = int_jia(2, 3)
dayin("2 + 3 =", a)
}cpro
导入 { int_jia } 来自 "bill-mark/shuxue"
入口() {
变量 a = int_jia(2, 3)
打印("2 + 3 =", a)
}cpro
import { int_jia } from "bill-mark/shuxue"
rukou() {
var a = int_jia(2, 3)
print("2 + 3 =", a)
}bash
cpro yunxing src/rukou.cp- 不能整个导入(
daoru "bill-mark/shuxue"会报错) - 两个包有同名函数时用
zuowei改名,见 模块与导入 - 只能导入自己
cpro.json里声明了的包。某个包是别的包的依赖、碰巧也装在磁盘上,你也不能直接用,要用就自己加进清单
安装全部依赖
拿到别人的项目,或者手动改了 cpro.json 之后:
bash
cpro anzhuang它会安装清单里的依赖,以及依赖的依赖,最后列出所有包:
[项目] /home/me/wo_de_app/cpro.json
+ bill-mark/shuxue@0.1.4 新装
依赖已全部装好:共 1 个包(新装 1,已有 0),直接依赖 1 个带 + 的是这次新装的。重复执行是安全的,已经装好的不会再下载。
删除依赖
bash
cpro yichu bill-mark/shuxue删除时不写版本号。不再被任何包使用的依赖会一起清理掉。
版本
- 清单里只能写精确版本,如
0.1.4,不支持^、~、>=这类范围写法 - 不会自动升级。要用新版本就改版本号,或重新
tianjia 包名@新版本 - 同一个包的两个版本可以同时存在:你用 2.0.0,你依赖的某个包用 1.0.0,两份各装各的,互不影响
下载
包从官方索引 index.cpro-lang.com 查到下载地址后下载,并校验 sha256。下载用的是系统的 curl 命令,Linux 上要先装好,见 Linux 环境配置。
下载过的包缓存在家目录的 .cpro/baoyuan/ 下,多个项目共用,不会重复下载。设置环境变量 CPRO_BAOYUAN 可以改到别的位置。
常见报错
| 报错 | 原因 | 怎么办 |
|---|---|---|
| 缺少发布者前缀 | 导入时只写了包名 | 写全名 发布者/包名 |
| 未在 cpro.json 的 yilai 中声明 | 清单里没有这个包 | 用 tianjia 添加 |
| 已声明,但尚未安装 | 改了清单还没安装 | 执行 anzhuang |
| 索引里没有 X@版本 | 这个版本没发布过 | 报错里会列出可用版本 |
| 缺少版本号 | tianjia 没写 @版本 | tianjia bill-mark/shuxue@0.1.4 |
| 下载失败(无法连接 / 超时) | 网络不通 | 检查网络后重试 |
| 下载失败,浏览器却能下载 | 浏览器走了代理,curl 没走 | 设置 HTTPS_PROXY 指向代理后重试 |
| 包体校验失败 | 下载内容和登记的不一致 | 不要使用该文件,向我们反馈 |
| 依赖成环 | 包之间互相依赖 | 按报错里的链路找到出问题的包 |
想发布自己的包,见 发布包。
