Laravel composer.jsonでのバージョン指定方法

1752 ワード

はじめに

composer.jsonにて、パッケージをインストールする際、バージョンの指定方法がわからなかったので、簡単にまとめます。

composerとは

そもそもcomposerとは、PHPのバージョン管理ツールです。
composerを使用してライブラリやフレームワークをインストールする際、相互関係を確認してくれたり、必要なライブラリを一緒にインストールしてくれたりする管理役です。
rubyでいうところのbundlerですね。

composer.jsonとは

依存するパッケージを定義するためのファイルです。
こちらに記載されたパッケージやライブラリを元に、composer installによってインストールされます。

composer.lockとは

一度、composer install を行うと自動的に作成されるファイルです。
ここには、インストールされたファイルが記載されています。composer.jsonの記録台帳のようなものです。
2回目にcomposer installを行なった場合、こちらのファイルを参照します。
記録台帳のようなものなので、こちらのファイルは書き換えたりはしません。

バージョン指定方法

composer.jsonを見ると

    "name": "laravel/laravel",
    "type": "project",
    "description": "The Laravel Framework.",
    "keywords": [
        "framework",
        "laravel"
    ],
    "license": "MIT",
    "require": {
        "php": "^7.2",
        "bensampo/laravel-enum": "^1.37",
        "doctrine/dbal": "^2.10",
        "fideloper/proxy": "^4.0",

上記のような記述になっており,
requireの部分にパッケージが記載されています。
ex.)phpであればバージョン7.2~
そして、コロン(:)の左側がパッケージ、ライブラリ名、左側がバージョンとなっています。

""

バージョン指定では レンジ(<=)、アスタリスク(*) キャレット(^) チルダ(~) が使用されます。
レンジは記載の通りになりますが、それ以外については、下記のようになります。

バージョン 範囲 補足
1.* 1.0.0以上、2.0.0未満 *には何でも入る
^1.0 1.0.0以上、1.1.0未満 一番左側にある、ゼロでないバージョンは変えない
~1.0 1.0.0以上、2.0.0未満 一番左側にあるバージョン固定で、それまでのバージョンは変わる

さいごに

そもそも^ ←の読み方が分からなかったので、良い勉強になりました。
キャロットと間違わないように気をつけます。