如何使用 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 list或cgr 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 -- --versioncgr 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请求教程
如何在阿里云购买域名并搭建网站?


