grf-cli
v2.0.2
Published
Rust-first CLI distribution for Git reference repositories, with npm only handling installation and upgrades.
Maintainers
Readme
grf-cli
English | 简体中文
grf-cli 正在重构为 Rust 原生 CLI。Node 不再承载运行时业务逻辑,npm
包只负责安装、升级和启动本地原生二进制。
当前状态
- 旧的 TypeScript 实现已经移除。
- Cargo 工程已经成为主运行时入口。
- 当前 Rust CLI 已具备这些命令:
grf addgrf cleangrf listgrf loadgrf unloadgrf update
- 旧的
config命令已经移除。 - Rust 重写版本不再自动兼容或迁移旧版磁盘状态格式。
- 仓库已经具备正式发布闭环:
- Rust 多平台构建
- 当前 GitHub 仓库 Release 资产上传
- npm 安装器包发布
安装
全局安装
pnpm add -g grf-cli升级并更新可执行文件
pnpm update -g grf-cli安装阶段的 postinstall 会按当前 npm 包版本下载当前 GitHub 仓库对应
release tag 下的原生二进制,并原地替换旧版本可执行文件。
本地开发
pnpm install --ignore-scripts
cargo build --release
cargo run -- --help
pnpm run check当安装器检测到当前目录是仓库工作区时,npm 启动器会优先使用
target/release/ 或 target/debug/ 中本地构建出来的 Rust 二进制。
发布流程
正式版本发布现在拆成两个工作流:
publish.yml:负责版本校验、 多平台原生构建和 GitHub Release 资产发布npm-publish.yml:在前一个工作流 成功完成后,自动发布 npm 安装器包
触发方式:
push tag: vX.Y.Z流水线步骤:
- 校验
package.json和Cargo.toml的版本一致。 - 为配置的平台目标构建
grf。 - 发布到当前 GitHub 仓库的 release。
- 上传原生二进制作为 release 资产。
- 第一个工作流成功后,自动触发 npm 发布工作流。
- 从当前 tag 对应的代码发布 npm 安装器包。
工作流需要的仓库密钥:
NPM_TOKEN
Release 上传使用当前仓库内建的 GITHUB_TOKEN。
如果 npm 发布开启了 2FA 保护,那么 NPM_TOKEN 必须具备发布时绕过
2FA 的能力,否则需要改成 npm Trusted Publishing。
npm 安装器职责
发布后的 npm 包只保留三件事:
- 为
grf、git-rf、gitref创建命令入口 - 在
postinstall时下载匹配版本的原生二进制 - 在
npm update/pnpm update后再次替换这个二进制
如果在正式发布前需要测试不同版本号下载,可以使用这些环境变量覆盖:
GRF_RELEASE_TAGGRF_INSTALL_LINUX_LIBC(gnu或musl)
License
MIT
