😷

composerパッケージには.gitattributesファイルを含めるべき

2020/10/16に公開

gitでは属性を設定するみたいな話だけど

composerパッケージとGitHubの文脈では
「composer install時にダウンロードしないファイルを.gitattributesで指定する」という意味。

composer install時の動作

composer install

何も指定しなければ--prefer-distオプション付きと同じ。
Zipファイルをダウンロードしてインストールするのがデフォルトの動作。

GitHub側の「Download ZIP」と同じ。

.gitattributesでexport-ignoreを指定するとこのZipファイルに含まれなくなる。
インストール時に不要なファイルをダウンロードしなくていいように指定する。

ライブラリやフレームワークの.gitattributesを確認

Symfonyは各Componentには含まれている。

残すファイル

動作に関係ないファイルは消していいけどREADMEやLICENCEは残す。

tests

元々不要なファイルを消すか消さないかだけなので動作への影響はなさそうに見えるけど影響することもある。
パッケージのテストの名前空間をTestsみたいにしていた場合、重複して困ることがある。

    "autoload-dev": {
        "psr-4": {
            "Tests\\": "tests/"
        }
    },

testsディレクトリも削除対象。

composer.lockの扱い

本来ライブラリではcomposer.lockはリポジトリに含めなくていい。
色々な開発の都合でどうしても含めたい場合は.gitattributesでだけ指定してcomposer install時には含まないようにすれば一番良い形で解決。

Discussion