ComposerのtransportOptionsについて

  • 1
    いいね
  • 0
    コメント

composerにはhttp://ストリームラッパのコンテキストオプションを指定できる機能があるように見える。
マニュアル化されておらず、ソースを追っていくしかなくて分かりにくい。

必要なもの(follow_locationとかmax_redirectsとか)はcomposer側で勝手に付与してくれるので、普通は使う必要はない。
ヘッダーを追加したり、tlsのオプションを変更できるとすれば面白いかもしれない。

packageのtransport-options

パッケージ自体に対しては、transport-optionsという属性名で指定できるっぽい。

{
  "name": "vendor/package",
  // ...
  "transport-options": {
    "https": {
      "method": "POST",
      "user_agent": "Mozilla/5.0"
    }
  }
}

repositoryのoptions

リポジトリに対しては、optionsという属性名で指定できる。ただし、optionsがtransportOptionsの意味になるのはtype: composerの場合だけだ。type: pathみたいに通信を必要としないrepositoryタイプもあるからね。

なお、このオプションはリポジトリ配下のパッケージダウンロード時に全て引き継がれる。パッケージ個別にtransport-optionsを指定していないかぎり、優先して使われるらしい。

例えばpackagist.jpに関して自己署名を許可してしかもpeerのチェックをしない、というデンジャラスな設定はこう書く。

{
  "repositories": {
    "packagist": {
      "type": "composer",
      "url": "https://packagist.jp",
      "options": {
        "ssl": {
          "allow_self_signed": true,
          "verify_peer": false
        }
      }
    }
  }
}