Upgrade to Pro — share decks privately, control downloads, hide ads and more …

PHPでの .gitattributes

Sponsored · Your Podcast. Everywhere. Effortlessly. Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.

PHPでの .gitattributes

PHP を使ったライブラリやアプリケーションでの .gitattributes ~ composer で配布の時に気を使って欲しい点

Avatar for kazusuke sasezaki

kazusuke sasezaki

March 25, 2026
Tweet

More Decks by kazusuke sasezaki

Other Decks in Programming

Transcript

  1. Composer is not a package manager in the same sense

    as Yum or Apt are. Yes, it deals with "packages" or libraries, but it manages them on a per-project basis, installing them in a directory (e.g. vendor) inside your project. By default, it does not install anything globally. Thus, it is a dependency manager. It does however support a "global" project for convenience via the global command.
  2. Composer is not a package manager in the same sense

    as Yum or Apt are. Yes, it deals with "packages" or libraries, but it manages them on a per-project basis, installing them in a directory (e.g. vendor) inside your project. By default, it does not install anything globally. Thus, it is a dependency manager. It does however support a "global" project for convenience via the global command. Composer は、Yum や Apt と同じ意味でのパッケージマネージャーでは ありません。確かに「パッケージ」やライブラリを扱いますが、それらはプ ロジェクト単位で管理され、プロジェクト内のディレクトリ(例:vendor)に インストールされます。デフォルトでは、グローバルには何もインストール しません。そのため、Composer は依存関係マネージャー です。ただし、 global コマンドを通じて「グローバル」プロジェクトもサポートしていま す。
  3. ほとんどのファイル要らないね! - vendor 配下の容量が圧迫される - コンテナイメージでのサイズも肥大化する - 下手をすると、テストだけのクラスがautoloadの対象になったり と、ザ☆無駄。 -

    CI環境が高度に整った現在において、利用者側がテストを実行し たりする必要はないし、デモファイルもライブラリとして利用すると きはコードが参照することはない。 → エクスポートに含めない様にしよう!
  4. composer は、GitHub ならびに Git と 密接な関係なため、インストール実行時は ほぼほぼ `git archive` なものが

    vendor に ダウンロードされます。 (要するに `--prefer-source` ではなく  `--prefer-dist` のとき)
  5. export-ignoreはまだまだ設定されてなかったり、見直しが必要 だったりする - ほかの言語でのエコシステムなどと比較して、composer 特有のだったりす るので、広くプラクティスとして広まってはない - 拒否リスト方式で個別に指定した場合、追加のファイルで漏れが出てくる   (例:

    phpstan.neon, .php_cs → .php-cs-fixer.php でのリネーム) - README.md を含めるかは一考の余地あり - https://github.com/doctrine/dbal/pull/7272 の話を受けて、個人的に は不要だと思います - 今回のPR群では、疑問に思われそうだったのでignore指定するの避けちゃっ たけど.... - …それでもSymfonyのモノレポなら...SymfonyならCIが良い感じに設定さ れている気がする! - → 漏れてました。m9(^Д^)プギャー