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 なら是非読んでおくべき。 自分にとって有用なパッチは他人にとっても有用な可能性があるので、できるところからオープンソースへコミットしたい。


Profile picture

Webのフロントエンドからバックエンド、プロトタイピングからプロダクションまで。定額の開発サービスも。詳しくはAboutページで。