如何使用 cgr 命令替代Composer的 global require? (隔离全局包)

发布时间 - 2026-01-16 00:00:00    点击率:
cgr 不是 composer global require 的替代品,因其仅支持临时、隔离、一次性的包执行,不注册命令到 $PATH,也无法持久使用或管理。

不能直接用 cgr 替代 composer global require,它压根不提供“全局安装”能力——cgr 的设计目标是**临时、隔离、一次性的包执行**,和全局命令长期可用的逻辑完全相反。

为什么 cgr 不是 global require 的替代品?

cgr(Composer Global Runner)本质是绕过全局 vendor 目录,每次运行时:下载指定包 → 创建独立临时 vendor → 执行其二进制 → 清理。它不注册命令到 $PATH,也不写入 ~/.composer/vendor/bin/

  • composer global require laravel/installer → 之后能一直用 laravel 命令
  • cgr laravel/installer → 只执行一次 laravel new,结束后命令就不可用了
  • 没有 cgr listcgr uninstall,无法管理已“跑过”的包

想隔离全局包?用 composer create-project + alias 更靠谱

真正解决“全局命令污染+版本冲突”问题的路径,不是找 cgr 的替代,而是放弃全局安装本身。推荐组合:composer create-project 固定路径 + shell alias

composer create-project --no-install --keep-vcs laravel/installer ~/.local/share/laravel-installer
cd ~/.local/share/laravel-installer && composer install --no-dev

然后加到 shell 配置中:

alias laravel='php ~/.local/share/laravel-installer/bin/laravel'
  • 所有依赖锁死在项目目录内,升级需手动

    git pull && composer install
  • 不同版本可并存(如 ~/.local/share/laravel-installer-4-5
  • cgr 多一次初始化成本,但换来的是可复现、可更新、可卸载

什么时候该坚持用 cgr?

只适用于那些你确定「这辈子就用这一次」的工具,比如临时生成一个 PHPStan 配置、跑一次 php-cs-fixer 修复旧项目、或者调试某个包的最新 dev-main 版本:

  • cgr phpstan/phpstan:1.10.x-dev -- --version
  • cgr friendsofphp/php-cs-fixer -- fix ./src --rules=@PHP80
  • 注意:必须显式指定版本(如 :^3.0),否则默认拉 dev-main,可能失败
  • 执行完立刻删掉临时目录(cgr 默认不清理,得自己 rm -rf ~/.cgr

真正难的不是选 cgr 还是 global require,而是承认:所谓“全局命令”,本身就是 Composer 设计上的权宜之计;长期项目里,每个 CLI 工具都应该有自己明确的生命周期和路径归属。


# php  # laravel  # git  # composer  # php8  # 工具  # ai  # 为什么  # require  # 的是  # 也不  # 权宜之计  # 什么时候  # 适用于  # 用了  # 就用  # 死在  # 它不  # 换来 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: 如何在阿里云服务器自主搭建网站?  Laravel如何配置和使用缓存?(Redis代码示例)  DeepSeek是免费使用的吗 DeepSeek收费模式与Pro版本功能详解  如何在IIS7上新建站点并设置安全权限?  如何用AI一键生成爆款短视频文案?小红书AI文案写作指令【教程】  美食网站链接制作教程视频,哪个教做美食的网站比较专业点?  如何获取PHP WAP自助建站系统源码?  桂林网站制作公司有哪些,桂林马拉松怎么报名?  大连 网站制作,大连天途有线官网?  Laravel如何实现邮箱地址验证功能_Laravel邮件验证流程与配置  惠州网站建设制作推广,惠州市华视达文化传媒有限公司怎么样?  零基础网站服务器架设实战:轻量应用与域名解析配置指南  高性能网站服务器部署指南:稳定运行与安全配置优化方案  Laravel请求验证怎么写_Laravel Validator自定义表单验证规则教程  html5的keygen标签为什么废弃_替代方案说明【解答】  Win11怎样安装网易有道词典_Win11安装词典教程【步骤】  如何快速上传建站程序避免常见错误?  如何在新浪SAE免费搭建个人博客?  音响网站制作视频教程,隆霸音响官方网站?  如何用5美元大硬盘VPS安全高效搭建个人网站?  Laravel如何实现用户密码重置功能?(完整流程代码)  JavaScript中的标签模板是什么_它如何扩展字符串功能  如何确认建站备案号应放置的具体位置?  Laravel如何与Docker(Sail)协同开发?(环境搭建教程)  如何快速搭建安全的FTP站点?  PHP正则匹配日期和时间(时间戳转换)的实例代码  车管所网站制作流程,交警当场开简易程序处罚决定书,在交警网站查询不到怎么办?  详解Android图表 MPAndroidChart折线图  PHP的CURL方法curl_setopt()函数案例介绍(抓取网页,POST数据)  再谈Python中的字符串与字符编码(推荐)  如何批量查询域名的建站时间记录?  Laravel怎么实现观察者模式Observer_Laravel模型事件监听与解耦开发【指南】  网站制作壁纸教程视频,电脑壁纸网站?  Laravel如何安装Breeze扩展包_Laravel用户注册登录功能快速实现【流程】  如何快速辨别茅台真假?关键步骤解析  如何自定义建站之星网站的导航菜单样式?  HTML 中如何正确使用模板变量为元素的 name 属性赋值  Android中Textview和图片同行显示(文字超出用省略号,图片自动靠右边)  Laravel怎么创建控制器Controller_Laravel路由绑定与控制器逻辑编写【指南】  WordPress 子目录安装中正确处理脚本路径的完整指南  Laravel的.env文件有什么用_Laravel环境变量配置与管理详解  Laravel模型事件有哪些_Laravel Model Event生命周期详解  Laravel如何优化应用性能?(缓存和优化命令)  北京网页设计制作网站有哪些,继续教育自动播放怎么设置?  Python文本处理实践_日志清洗解析【指导】  百度输入法全感官ai怎么关 百度输入法全感官皮肤关闭  Laravel如何生成API文档?(Swagger/OpenAPI教程)  5种Android数据存储方式汇总  Laravel的HTTP客户端怎么用_Laravel HTTP Client发起API请求教程  如何在阿里云购买域名并搭建网站?