如何让Composer仅更新开发依赖_--dev参数在Composer update中的应用


答案:composer update --dev 并不会只更新开发依赖,而是同时更新 require 和 require-dev 中的包;若要仅更新开发依赖,需手动列出 require-dev 中的包名并附加 --dev 参数执行命令,如 composer update phpunit/phpunit squizlabs/php_codesniffer --dev,以确保仅更新指定的开发工具而不影响生产环境依赖。

如何让composer仅更新开发依赖_--dev参数在composer update中的应用

在使用 Composer 管理 PHP 项目依赖时,有时你只想更新 开发环境专用的依赖(例如 PHPUnit、PHPStan、CS 规则等),而不影响生产环境所需的主依赖。这时可以通过 --dev 参数实现仅更新 require-dev 中定义的包。

理解 --dev 参数的作用

--devcomposer update 命令的一个选项,它的作用是确保开发依赖也被安装或更新,即使你在之前运行了不带 --dev 的 install 或 update。但更重要的是,在特定场景下可以结合其他参数来实现“只更新 dev 依赖”。

默认情况下,composer update 会同时更新 requirerequire-dev 中的包。如果你只想更新开发依赖,可以这样做:

方法:指定更新 require-dev 中的包

Composer 没有直接的 “update only dev” 开关,但你可以通过列出 require-dev 中的所有包并配合 --dev 来达到目的。

步骤如下:
  • 打开 composer.json,找到 require-dev 字段下的所有包名
  • 在命令行中运行 update,并传入这些包名,再加上 --dev

例如,你的 composer.json 中有:

"require-dev": {
    "phpunit/phpunit": "^9.5",
    "squizlabs/php_codesniffer": "^3.6"
}

你可以运行:

composer update phpunit/phpunit squizlabs/php_codesniffer --dev

这样 Composer 就只会更新这两个开发工具,而不会触碰 require 中的生产依赖。

注意事项与常见误区

很多人误以为 composer update --dev 会“只更新开发依赖”,但实际上它会更新,只是同时确保 dev 依赖被处理。因此单独使用 --dev 并不能限制更新范围。

真正起“过滤”作用的是

另外,如果你执行:

灵思AI 灵思AI

专业的智能写作辅助平台

灵思AI 163 查看详情 灵思AI

composer install --no-dev

那么后续的 update 即使加上 --dev 也可能无法恢复 dev 包,需重新运行 install 或确保锁文件未被破坏。

实用技巧:快速提取 dev 包并更新

如果你希望一键更新所有开发依赖,可以借助 shell 命令快速生成包列表:

Linux/macOS 用户可使用:

composer update $(composer show --no-dev --direct | awk '{print $1}' | paste -sd " ") --dev

或者更准确的方式是解析 composer.json(需要 jq 工具):

composer update $(jq -r '.["require-dev"] | keys[]' composer.json) --dev

这条命令会自动提取 require-dev 中的所有包名并传递给 update,避免手动输入遗漏。

基本上就这些。通过合理使用包名过滤和 --dev 参数,就能精准控制 Composer 只更新开发依赖,不影响线上环境稳定性。

以上就是如何让Composer仅更新开发依赖_--dev参数在Composer update中的应用的详细内容,更多请关注php中文网其它相关文章!


# 端到  # 浙江关键词优化排名推广  # 黄州网络推广网站官网  # seo外链写法  # 自动营销推广  # seo网站优化优化排名  # 威海综合性网站建设  # 怀化seo公司排名  # 长沙软文营销推广方法  # 柳州网站关键词排名  # 运营营销推广是干什么  # 你可以  # 自动加载  # php  # 配置文件  # 如何解决  # 只想  # 可以通过  # 而不  # 的是  # 如果你  # 开发环境  # 工具  # composer  # json  # js 


相关栏目: 【 Google疑问12 】 【 Facebook疑问10 】 【 优化推广96088 】 【 技术知识133117 】 【 IDC资讯59369 】 【 网络运营7196 】 【 IT资讯61894


相关推荐: Leaflet地图弹出窗口图片动态显示:避免缺失图标的专业指南  抄漫画官网防走失地址_抄漫画最新漫画完整版阅读入口  以下哪一个是适应长期护理制度发展而设立的新职业  《KARDS》冬季扩展包“国土阵线”上线!全新“协力”机制改变战场格局  《原神》月之一版本新增书籍一览  C++ optional用法详解_C++17处理可能为空的返回值  鸣潮历史学家灯塔位置一览  汽车之家网页版免费登录_汽车之家官网首页直接进入  《杖剑传说》食谱大全  c++如何使用std::thread::join和detach_c++线程生命周期管理  C++ switch case字符串_C++如何实现字符串switch匹配  使用VS Code作为你的个人知识管理系统  excel怎么计算平均值 excel平均函数*ERAGE使用教学  从J*a应用程序中导出MySQL表数据的技术指南  《大润发优鲜》充值方法介绍  Win10运行窗口在哪里打开 Win10调出运行命令框快捷键【技巧】  多闪APP官方下载安装入口_多闪最新版本获取入口  Selenium自动化:利用键盘模拟解决复杂日期输入框输入问题  如何使用 Optional 类型并满足 Pylint 的类型检查  Golang如何初始化module项目_Golang module init使用说明  Win11怎么录屏_Windows 11自带Xbox Game Bar录制视频  嘴唇干裂起皮怎么办 唇部护理与预防干裂的方法【详解】  《飞猪旅行》购买汽车票方法  《梦想世界:长风问剑录》药师一图流分享  海棠书屋官方在线书籍入口 海棠书屋文学作品浏览官网链接  蛙漫2(台版)正版官网 2025免费网页版分享  智云Q3和Q2有什么升级_智云Q3与Q2手持云台功能与性能对比分析  泰拉瑞亚水晶无法放置问题  小红书网页版怎么进 小红书网页版通用入口  Golang如何使用crypto/md5生成哈希_Golang MD5哈希生成方法  六级准考证号怎么查_四六级准考证查询入口官网  Excel如何快速找到并断开外部数据源链接_Excel外部数据源断开方法  CodeIgniter 3 连接 SQL Server:正确获取查询结果的教程  Excel如何制作月度销售统计图_Excel动态图表制作与控件应用  C++如何实现矩阵乘法_C++二维数组矩阵运算代码示例  Go反射进阶:访问内嵌结构体中的被遮蔽方法  TikTok网页版实时观看入口 TikTok网页版短视频在线浏览  《下一站江湖2》心法融合技巧  KFC邀请码怎么使用领额外优惠_KFC邀请码输入方式与额外优惠代码获取方法  《地下城堡4:骑士与破碎编年史》墓穴挑战125攻略  雨课堂官网在线登录 网页版雨课堂登录链接  C++中的explicit关键字有什么作用_C++类型转换控制与explicit使用  《雷电模拟器》截图方法介绍  键盘测试软件哪个好_键盘故障检测工具推荐  解决VS Code中Python版本冲突与输出异常的指南  J*aScript对象中深度嵌套URL键的查找与更新策略  《随手记》备份数据方法  12306夜间购票失败? | 查看官方公布的暂停服务公告与应对方案  西瓜视频怎么查看访客记录_西瓜视频访客记录查看方法  在Django中动态检查模型关联:一种灵活的解决方案 

 2025-12-03

了解您产品搜索量及市场趋势,制定营销计划

同行竞争及网站分析保障您的广告效果

点击免费数据支持

提交您的需求,1小时内享受我们的专业解答。

运城市盐湖区信雨科技有限公司


运城市盐湖区信雨科技有限公司

运城市盐湖区信雨科技有限公司是一家深耕海外推广领域十年的专业服务商,作为谷歌推广与Facebook广告全球合作伙伴,聚焦外贸企业出海痛点,以数字化营销为核心,提供一站式海外营销解决方案。公司凭借十年行业沉淀与平台官方资源加持,打破传统外贸获客壁垒,助力企业高效开拓全球市场,成为中小企业出海的可靠合作伙伴。

 8156699

 13765294890

 8156699@qq.com

Notice

We and selected third parties use cookies or similar technologies for technical purposes and, with your consent, for other purposes as specified in the cookie policy.
You can consent to the use of such technologies by closing this notice, by interacting with any link or button outside of this notice or by continuing to browse otherwise.