transport-options 是第三方插件使用的自定义配置,用于控制文件传输行为,如 SFTP 部署选项,需插件支持并正确安装启用才能生效。

Composer 的 transport-options 并不是 Composer 核心本身的配置项,而是某些第三方插件(如 composer/installers 或自定义安装器)或自定义传输机制中可能用到的选项。在官方 Composer 文档中,并没有直接称为 transport-options 的全局配置。
但如果你在项目中看到 transport-options,它通常出现在以下场景中:
1. 自定义 Installer 插件中的 transport-options
一些扩展包为了控制文件如何被复制、移动或部署,可能会引入 transport-options 来传递额外参数。例如,在使用 phpseclib 进行远程部署时,可能通过该字段配置 SSH 选项。
示例(composer.json):
{
"extra": {
"installer-paths": {
"deploy/{$name}/": ["your-vendor/your-package"]
},
"transport-options": {
"your-vendor/your-package": {
"method": "sftp",
"host": "example.com",
"username": "deploy",
"password": "secret",
"port": 22
}
}
}
}
这种配置需要对应插件支持解析 transport-options 字段。你必须确保已安装并启用了能处理这些选项的 Composer 插件。
2. 私有仓库或镜像的传输配置
虽然不叫 transport-options,但 Composer 支持为私有仓库设置认证和传输层行为,比如使用 HTTPS 或 SSH 时的 CA 验证、代理等。
常见方式是通过 config 字段设置:
{
"config": {
"secure-http": false,
"github-protocols": ["https"],
"gitlab-token": "your-token",
"http-basic": {
"your-repo.example.com": {
"username": "user",
"password": "pass"
}
}
}
}
这类配置影响的是资源下载的“传输”过程,可以理解为广义上的传输选项。
3. 使用 Plugin 处理自定义传输逻辑
如果你想真正实现基于 transport-options 的功能,需要编写一个 Composer 插件,监听事件(如 post-install-cmd),读取 extra.transport-options 并执行相应操作(如上传文件、同步到服务器等)。
步骤简述:
- 创建一个 Composer 插件类,实现
PluginInterface - 注册事件监听器(如
ScriptEvents::POST_INSTALL_CMD) - 从
$composer->getPackage()->getExtra()['transport-options']获取配置 - 根据配置执行 SFTP、Rsync 或 API 调用等操作
总结
transport-options 不是 Composer 内置配置,而是由特定插件约定使用的自定义字段。它的作用和用法取决于具体插件的实现。要使用它,你需要:
- 确认所用插件文档是否支持该字段
- 按照插件要求格式填写
extra.transport-options - 确保插件已正确安装并启用
如果没有使用相关插件,添加 transport-options 不会产生任何效果。
基本上就这些。关键是看谁在读这个配置。










