Bulblub

Composerパッケージにパッチをあてる便利なプラグイン

August 31, 2018

Composerで管理しているプロジェクトで利用しているパッケージに修正を加えたい。vendor 以下を直接編集してしまうと次に composer install などでバッケージを更新した時に上書きされてしまうのでそれは避けたい。そうなるとパッチを作ってgitの管理下に置いて適用するのが良いと思う。ただ、数が増えてきたら適用すること自体が手間になる。 このリンク(lightning/composer.json at 8.x-2.29 · acquia/lightning)はDrupalのLightningというディストリビューションの composer.json だけどみてもらえればそのパッチの多さに驚くかもしれない。

そんな時に便利なのが cweagans/composer-patches - Packagist というComposerのプラグインで、これは drupal-project/composer.json にも含まれている。

実際に僕も自分でDrupal.orgへパッチを送り、それがモジュールに取り込まれる前に自分のプロジェクトへ取り込まれる前に利用するためにこのプラグインを利用している。書き方は以下の感じ。Drupalの話ばかりになってしまったけど、当然Drupal以外のComposerプロジェクトに利用できる。

# composer.jsonから一部抜粋
  "extra": {
    "patches": {
      "drupal/drupal": {
        "Add startup configuration for PHP server": "https://www.drupal.org/files/issues/add_a_startup-1543858-30.patch"
      }
    }
  }

また、これはgithubの便利機能だけど

URLに .patch を付与するだけでパッチが作れる。これをそのままcomposer.jsonの中で指定することも可能。

おまけ

Advanced patch contributor guide | Drupal.orgApplying patches | Drupal.org はDrupalistなら是非読んでおくべき。 自分にとって有用なパッチは他人にとっても有用な可能性があるので、できるところからオープンソースへコミットしたい。

Tags:

Tomotsugu Kaneko

Written by Tomotsugu Kaneko who lives and works in Japan. Follow me on Twitter