0

0

composer怎么导出依赖清单_生成项目composer依赖列表【说明】

穿越時空

穿越時空

发布时间:2026-03-19 12:57:10

|

430人浏览过

|

来源于php中文网

原创

composer show 是最轻量可靠的实时依赖清单来源,直接读取 vendor/ 下实际安装结果而非 composer.json 声明,加 -a 列出全部包,--format=json 输出结构化数据供解析。

composer怎么导出依赖清单_生成项目composer依赖列表【说明】

composer show 能直接列出所有已安装依赖

项目里运行 composer show 就能看到当前 vendor/ 下所有包的名称、版本和简短描述,这是最轻量、最可靠的实时清单来源。它不读取 composer.json 的声明,而是读取实际安装结果,所以能反映 lock 文件生效后的最终状态。

常见错误是只看 composer.json —— 那只是“想装什么”,不是“装了什么”。比如手动删过某个 vendor/ 子目录,或 composer install 时跳过了某些平台约束,composer.json 就会和真实环境脱节。

  • -s 参数可显示包的源(如 distsource
  • --tree 可看依赖层级,但输出易刷屏,建议配合 grep 过滤,例如:composer show --tree | grep monolog
  • 不加任何参数时默认只显示顶层包;加 -a 才列出全部(含被间接引入的)

用 composer show --format=json 导出结构化清单

需要把依赖写入 CI 日志、做版本比对或交给其他工具处理时,--format=json 是唯一靠谱的选择。它输出的是标准 JSON,字段稳定,不含颜色、缩进或 ANSI 控制符,解析安全。

注意:这个 JSON 不是 composer.lock 的简化版,而是 composer show 命令执行结果的序列化,因此不含哈希、zip 下载地址等 lock 特有字段,但包含每个包的 homepagedescriptiontype 等元信息。

  • 导出到文件: composer show --format=json > deps.json
  • 如果只需要包名+版本,用 jq 提取:composer show --format=json | jq '.[] | {name: .name, version: .version}'
  • 别用 composer install --dry-run --verbose 模拟——它不保证输出格式稳定,且可能因插件干扰而漏包

composer.lock 是权威依赖快照,但不能直接当“清单”用

composer.lock 文件本身是完整、精确、可复现的依赖快照,但它不是为“人眼阅读”设计的。它的 packages 字段里混着 root 包、开发依赖、平台包(如 ext-curl),还包含大量构建元数据(distsourcetransport-options),直接解析容易误判。

Boba.video
Boba.video

AI动漫视频生成器

下载

典型踩坑:有人用 jq '.packages[] | select(.type != "project")' composer.lock 来过滤非项目包,结果漏掉 require-dev 里的测试工具(它们 type 也是 library);或者把 platform 里的 PHP 版本当成一个“依赖包”统计进去。

  • 真正需要锁定语义时,就该用 composer.lock —— 但导出“清单”目的通常是审计、报告或 diff,这时应优先走 composer show
  • 若必须从 lock 解析,务必区分 packages(已安装的 PHP 包)和 packages-dev(开发依赖),并跳过 platformplatform-dev
  • composer validate 能确认 lock 是否与 json 同步,但不校验内容是否真实存在 vendor 中

CI/CD 场景下推荐组合命令:先 install 再 show

在 GitHub Actions、GitLab CI 等环境里,光靠 composer show 可能报错:“No composer.lock found”,因为很多流程跳过了 composer install。这时候不能硬凑,得按实际生命周期来。

正确顺序是:确保 composer install --no-interaction --prefer-dist 成功执行后,再跑 composer show -a --format=json。否则你拿到的可能是空列表,或旧缓存结果。

  • --no-dev 要谨慎:如果清单用途包括安全扫描(如检测 phpunit 版本),去掉 dev 依赖就会漏报
  • 在 Docker 构建中,别把 composer show 放在 COPY . . 之前——vendor 还没生成,命令必然失败
  • 若项目用了 path 类型仓库(本地路径依赖),composer show 仍能正确显示其版本(来自其自身 composer.json),但 composer.lock 里记录的是绝对路径,二者语义不同

依赖清单这事,表面是导出动作,实质是明确“以谁为准”:代码?lock?还是 vendor 目录?选错源头,后面所有分析都偏了。

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

WorkBuddy
WorkBuddy

腾讯云推出的AI原生桌面智能体工作台

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
composer是什么插件
composer是什么插件

Composer是一个PHP的依赖管理工具,它可以帮助开发者在PHP项目中管理和安装依赖的库文件。Composer通过一个中央化的存储库来管理所有的依赖库文件,这个存储库包含了各种可用的依赖库的信息和版本信息。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

163

2023.12.25

json数据格式
json数据格式

JSON是一种轻量级的数据交换格式。本专题为大家带来json数据格式相关文章,帮助大家解决问题。

459

2023.08.07

json是什么
json是什么

JSON是一种轻量级的数据交换格式,具有简洁、易读、跨平台和语言的特点,JSON数据是通过键值对的方式进行组织,其中键是字符串,值可以是字符串、数值、布尔值、数组、对象或者null,在Web开发、数据交换和配置文件等方面得到广泛应用。本专题为大家提供json相关的文章、下载、课程内容,供大家免费下载体验。

549

2023.08.23

jquery怎么操作json
jquery怎么操作json

操作的方法有:1、“$.parseJSON(jsonString)”2、“$.getJSON(url, data, success)”;3、“$.each(obj, callback)”;4、“$.ajax()”。更多jquery怎么操作json的详细内容,可以访问本专题下面的文章。

337

2023.10.13

go语言处理json数据方法
go语言处理json数据方法

本专题整合了go语言中处理json数据方法,阅读专题下面的文章了解更多详细内容。

84

2025.09.10

format在python中的用法
format在python中的用法

Python中的format是一种字符串格式化方法,用于将变量或值插入到字符串中的占位符位置。通过format方法,我们可以动态地构建字符串,使其包含不同值。php中文网给大家带来了相关的教程以及文章,欢迎大家前来阅读学习。

890

2023.07.31

python中的format是什么意思
python中的format是什么意思

python中的format是一种字符串格式化方法,用于将变量或值插入到字符串中的占位符位置。通过format方法,我们可以动态地构建字符串,使其包含不同值。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

468

2024.06.27

require的用法
require的用法

require的用法有引入模块、导入类或方法、执行特定任务。想了解更多require的相关内容,可以阅读本专题下面的文章。

510

2023.11.27

Go Web框架Gin接口开发与中间件设计实践
Go Web框架Gin接口开发与中间件设计实践

本专题围绕 Go 在 Web 后端开发中的主流框架 Gin 展开,系统讲解高性能接口开发与中间件机制设计。内容涵盖路由分组、请求绑定、参数校验、统一响应封装、日志与鉴权中间件实现,以及接口限流与异常处理策略。通过实战项目案例,帮助开发者构建结构清晰、性能优良的 Go Web 服务体系,提升接口开发效率与系统可维护性。

7

2026.03.19

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
第二十四期_PHP8编程
第二十四期_PHP8编程

共86课时 | 3.5万人学习

成为PHP架构师-自制PHP框架
成为PHP架构师-自制PHP框架

共28课时 | 2.6万人学习

第二十三期_PHP编程
第二十三期_PHP编程

共93课时 | 7.6万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号