cgr 是第三方工具,用于替代 composer global require 以解决全局工具依赖冲突问题,它为每个工具创建独立目录和 autoload,互不干扰。

cgr 不是 Composer 自带命令,它是一个第三方工具,用来替代 composer global require,解决全局工具间依赖冲突问题。直接用 composer global require 会让所有工具共享同一个 autoload.php 和依赖版本,一旦两个工具都依赖 symfony/console 但要求不同主版本,就会报 Class not found 或静默行为异常——cgr 为每个工具建独立目录和 autoload,互不干扰。
安装 cgr 本身(只需一次)
先确保你已装好 Composer,并且 composer 命令可用:
- 运行
composer global require consolidation/cgr - 成功后,
cgr命令就可用了(它会被软链接到~/.composer/vendor/bin/cgr) - 注意:这一步仍需确保
~/.composer/vendor/bin在$PATH中,否则会提示command not found
cgr 安装 CLI 工具的实际命令
用 cgr 替代 composer global require,语法完全一致,但行为隔离:
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
-
cgr drush/drush→ 安装到~/.cgr/drush-drush/,生成~/.cgr/bin/drush -
cgr phpstan/phpstan→ 安装到~/.cgr/phpstan-phpstan/,生成~/.cgr/bin/phpstan - 包名中斜杠会被转成短横线,作为目录名;若重名(如
foo/bar和foo/baz),可能冲突,建议手动检查~/.cgr/
让 cgr 安装的命令能直接运行
cgr 默认把二进制文件放 ~/.cgr/bin/,这个路径必须加入 $PATH 才能敲命令就执行:
- 在
~/.zshrc或~/.bashrc末尾加一行:export PATH="$HOME/.cgr/bin:$PATH" - 然后运行
source ~/.zshrc(或对应 shell 配置) - 验证:
echo $PATH看是否含该路径;再试which drush,应返回/Users/xxx/.cgr/bin/drush(macOS/Linux)或类似路径 - Windows 用户需将
%USERPROFILE%\.cgr\bin加入系统环境变量 PATH,并重启终端
cgr 的管理局限与绕过方式
cgr 没有 list、uninstall 或 update 子命令,所有操作靠文件系统直觉完成:
- 查看已装工具:
ls ~/.cgr/,每个子目录名即工具标识(如drush-drush) - 卸载某个工具:
rm -rf ~/.cgr/drush-drush+rm ~/.cgr/bin/drush - 升级:直接再跑一遍
cgr drush/drush,会覆盖旧目录(不保留旧版本) - 它不读取或写入
composer.lock,也不处理依赖树自动更新——适合工具链稳定、更新不频繁的场景
真正容易被忽略的是:即便用了 cgr,你也得自己维护 ~/.cgr/bin 在 $PATH 中,而且每次新增工具后不用 reload shell,但改了 PATH 后必须 source;另外,cgr 不校验签名、不锁版本、不支持 --with-all-dependencies 这类选项——它只做一件事:隔离。要更可控,phar 打包仍是更干净的选择。










