跳转到主内容
新派编程网 - 新潮编程理念,全新技术课堂!

composer如何在无网络时查看已安装包列表?

能,composer show 本身不依赖实时网络,只要 vendor/composer/installed.json 文件存在且有效,即可离线列出已安装包;该文件由 composer install/update 生成,是当前 vendor 包的元数据快照。 composer show 不联网能用吗 能,但得提前做好准备——
composer show
本身不依赖实时网络,但它会尝试读取
vendor/composer/installed.json
。只要这个文件存在且没被删,离线时也能列出已安装包。 常见错误现象:
composer show
报错
Could not fetch packages information
,其实是它误判了网络状态,或者
installed.json
损坏/缺失;不是命令本身必须联网。 确保项目已执行过至少一次
composer install
或
composer update
(生成
vendor/composer/installed.json
) 别手动删
vendor/composer/
下的元数据文件 如果用了
--no-install
或
--dry-run
,
installed.json
不会生成,离线就真看不到列表了 离线时如何确认 installed.json 是否可用 直接检查文件是否存在、是否可读,比猜更可靠。这个文件是 Composer 安装后写入的“快照”,内容就是当前 vendor 里所有包的 name/version/type 等信息。 使用场景:CI 构建后打包镜像、内网服务器部署、飞行模式调试。 运行
ls -l vendor/composer/installed.json
,确认文件存在且大小 > 0 用
cat vendor/composer/installed.json | head -n 5
快速看前几行是否是合法 JSON 如果项目用的是 Composer 2.x,还可能有
installed.php
(二进制缓存),但
show
命令默认仍走 JSON composer show 的常用离线参数组合 离线时别乱加参数——有些选项会触发远程请求,比如
--outdated
或
--tree
(后者在某些旧版本会尝试查 lock 文件外的包)。 Composer 2.9.6 Composer 2.9.6 是 PHP 生态中高效、稳定的依赖管理工具。此版本在性能与兼容性上进一步优化,改进了依赖解析算法,提升大型项目中的安装与更新速度。它支持并行下载任务,显著减少等待时间,并增强了与私有仓库及镜像源的交互稳定性。同时修复了多项命令行交互与内存使用相关的缺陷,确保在复杂依赖关系下依然可靠运行。无论是新项目初始化还是现有系统维护,Composer 2.9.6 都能为开发者提供流畅、精准的依赖管理体验。 下载 安全、真正离线可用的组合只有这几个:
composer show
:列出全部已安装包(name + version)
composer show --platform
:只看 PHP 扩展和平台包(如
ext-curl
),完全不碰 vendor
composer show monolog/monolog
:查单个包详情(只要它在
installed.json
里就有) 避免用
--all
(已废弃)、
--direct
(部分版本仍会联网校验) 为什么有时候离线 show 会卡住或报错 不是网络问题,而是 Composer 在初始化阶段做了隐式行为:比如读取全局配置、检查 CA 证书路径、甚至尝试访问
~/.composer/auth.json
(哪怕只是 stat())。这些在无网络但文件系统正常的机器上不该失败,但某些容器环境或权限收紧的系统会暴露问题。 性能与兼容性影响:Composer 1.10+ 对离线响应做了优化,但若
COMPOSER_HOME
指向一个不可写的路径,它可能反复重试写日志,造成假卡顿。 临时解决:加
-n
(非交互)和
--no-plugins
避免插件触发额外逻辑 终极保险:用
php -r "echo json_encode(json_decode(file_get_contents('vendor/composer/installed.json'), true), JSON_PRETTY_PRINT);"
绕过 Composer 二进制 注意 Windows 上路径分隔符和权限问题,
installed.json
可能被防病毒软件锁定 最易被忽略的一点:
composer.lock
文件存在 ≠
installed.json
存在。lock 是声明,installed.json 是事实——没 install 过,离线就真没得 show。

相关文章