Cherri 包管理器完整教程:基于 Git 仓库的代码共享、安装与自动更新

📅 发布时间:2026/10/12 3:07:06
Cherri 包管理器完整教程:基于 Git 仓库的代码共享、安装与自动更新
【免费下载链接】cherriSiri Shortcuts Programming Language 项目地址https://gitcode.com/gh_mirrors/ch/cherri点击查看免费下载Cherri是一款专为 Siri Shortcuts快捷指令打造的编程语言可将.cherri源码直接编译为可运行的 Shortcut。它内置了一套基于Git 仓库的包管理器一条--install命令即可从远程 Git 仓库拉取代码包编译时还会自动安装和更新所有依赖让你像使用go get、npm install一样轻松管理 Shortcuts 项目。本教程带你快速上手Cherri 包管理器的安装、共享与自动更新全流程。一、Cherri 包管理器是什么在 Cherri 中包就是一个包含 Cherri 源码的远程 Git 仓库。与传统包管理不同它的核心特点是特性说明 Git 仓库即包每个包对应一个cherri-{package_name}仓库无需中心化仓库索引 编译时自动更新每次编译.cherri文件时自动检查并安装/更新依赖 自动 #include包中的代码会被自动注入到你的项目里无需手动引用 信任机制首次安装前会询问你是否信任该仓库防止恶意代码自动注入 支持私有仓库可通过--add-uri指定任意 Git 托管地址包管理逻辑的完整实现位于 packages.go命令参数注册在 args.go。二、准备工作安装 Cherri 编译器Cherri 是一个 Go 编写的静态编译二进制推荐通过包管理器安装Homebrew 方式macOSbrew tap electrikmilk/cherri brew install electrikmilk/cherri/cherriNix 方式nix profile install github:electrikmilk/cherri安装完成后直接运行cherri不带参数即可看到樱桃 Logo 和完整的命令帮助。也可以将 ReadMe.md 作为快速参考。三、创建你的第一个 Cherri 包--init初始化步骤包名遵循两种格式cherri --init会做正则校验见 newPackage私有包签名{author}/{package_name}远程 Git 仓库https://{domain}/{username}/cherri-{package_name}# 在当前目录初始化一个包 cherri --init alice/myutils执行后会在当前目录生成info.plist—— 它是包的清单文件manifest记录包名、作者、托管地址以及依赖列表结构定义见 cherriPackage。之后把代码提交到以cherri-myutils命名的 Git 仓库别人就能安装你的包了。一个合格的包仓库必须满足根目录存在入口文件main.cherri和info.plist否则安装会失败校验逻辑见 install。四、安装一个包一条--install命令在你的项目目录已有info.plist中执行# 安装公开仓库包默认托管在 github.com cherri --install bob/datekit # 也可以直接写完整仓库地址 cherri --install https://gitee.com/bob/cherri-datekit安装时发生的事情Cherri 会先询问Do you trust this package?输入y后该包签名会写入信任列表~/.cherri/trusted.plist见 checkTrustedPackages通过git clone --depth 5浅克隆仓库到本地./packages/bob/datekit/目录校验main.cherri与info.plist存在把依赖写入项目的info.plist并递归安装该包自身声明的依赖见 loadDependencies。输出示例Installing bob/datekit from https://github.com/bob/cherri-datekit.git... [] bob/datekit installed: ./packages/bob/datekit五、自动更新的魔法编译时零操作拉取依赖这是 Cherri 包管理器最贴心的设计——你甚至不需要手动执行安装。编译入口 preParse 的流程是检测到当前目录存在info.plist时自动调用installPackages()检查每个依赖是否已克隆对已存在的包跳过对缺失的包自动重新克隆调用 includePackages 在源码顶部按签名排序自动插入#include ./packages/user/name/main.cherri语句实现代码注入再走正常的 include 解析includes.go完成编译。也就是说只要info.plist里登记了依赖每次运行cherri main.cherri都会自动同步代码。依赖方升级后你本地会自动拿到新实现——这就是基于 Git 仓库的自动更新。六、常用包管理命令清单命令作用cherri --init {author}/{name}初始化包生成info.plistcherri --install user/pkg安装远程 Git 包cherri --remove user/pkg删除包文件并从清单移除cherri --package查看当前包信息含依赖列表cherri --packages列出所有已安装包cherri --tidy重新安装强制刷新全部依赖cherri --add-uri gitee.com设置当前包的托管地址提示当仓库端发生破坏性更新或本地文件损坏时执行cherri --tidy即可删除旧文件并全量重新克隆实现见 tidyPackage。七、管理私有仓库--add-uri一步配置默认情况下包会托管在github.comURL 规则见 url。如果你的仓库在 Gitee、自建 GitLab 或任何兼容 Git 的服务上# 发布方将当前包关联到私有托管地址 cherri --add-uri gitee.com # 使用方安装时可直接写完整 URL无需额外配置 cherri --install https://gitee.com/alice/cherri-internal-tools--add-uri会把地址写入info.plist的Uri字段清单中Uri为空时显示为Hosted: Private见 printPackage。八、目录结构速览包都装在哪里一个使用包管理器的 Cherri 项目编译后的目录大致长这样my-project/ ├── info.plist # 包清单作者、Uri、依赖列表 ├── main.cherri # 入口文件 └── packages/ ├── alice/myutils/ # 克隆下来的包含 main.cherri、info.plist └── bob/datekit/包的安装路径固定为./packages/用户/包名见 pathCherri 的全局数据如信任列表存放在~/.cherri/目录。九、常见问题 FAQQ1安装提示unable to install怎么办仓库必须提供main.cherri和info.plist两个文件且 Git 地址必须正确。可先用git clone手动验证仓库可达。Q2提示info.plist does not exist说明当前目录还没初始化先运行cherri --init 你的名字/包名错误来源见 initPackageError。Q3如何调试编译与包的注入过程加上--debug或-d参数会打印预处理文件、调试信息与.plist输出包括 include 展开映射printIncludesDebug。Q4包被标记为 Archived 会怎样编译器会打印黄色警告[!] Archived package但仍会继续安装提醒你关注包的维护状态。十、写在最后Cherri 包管理器用Git 仓库 包的极简设计让 Shortcuts 项目第一次拥有了工程化的代码共享与依赖管理能力--init建包、--install装包、--tidy刷新编译时自动同步更新。配合 #include 多文件组织、函数定义与类型检查构建大型 Shortcuts 项目再也不怕维护困难了。相关源码packages.go包管理核心、args.go命令参数、parser.go编译时自动安装。现在就开始发布你的第一个 Cherri 包吧赞分享【免费下载链接】cherriSiri Shortcuts Programming Language 项目地址https://gitcode.com/gh_mirrors/ch/cherri点击查看免费下载相关推荐在 Mac 和 Linux 上打开 Visio 文件drawio-desktop 导入 VSDX 实操在 Mac 和 Linux 上打开 Visio 文件drawio desktop 导入 VSDX 实操 上周一个 Windows 同事往群里发了个 .vsdx桌面应用图形学从0构建StrykerOSSAndroid Gradle ndk-build编译指南与Release签名配置清单从0构建StrykerOSSAndroid Gradle ndk build编译指南与Release签名配置清单 StrykerOSSStryker是网络安全从异常噪音到精准控制全面解析Marlin固件中STM32F407VE风扇PWM优化方案从异常噪音到精准控制全面解析Marlin固件中STM32F407VE风扇PWM优化方案 你是否曾在3D打印过程中听到风扇发出刺耳的噪音或者发现风扇转速时快时智能硬件嵌入式固件物联网创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考