テクニカル雑記帳です
Composerでdev-masterを指定しているpackageの正確なバージョンの確認方法
結論
composerのパッケージのバージョンを調べるときは composer show -i packagename
する.
packagenameつけなかったりcomposer.lock見ても dev-master
で使っているパッケージの正確な名前はわからないので気をつけよう.
経緯
例えばこんな感じの composer.json があったとして,
{
"name": “test”,
"description": “this is test server",
"keywords": ["framework", "laravel"],
"license": "",
"type": "project",
"require": {
"intervention/image": "dev-master”,
},
}
この部分 "intervention/image": "dev-master”,
の, dev-master
について.
dev-master
とは,このpackageのmasterブランチのことで、このバージョンを指定するとmasterの最新コミットが適用される.
つまり,最新機能が入っているけど不安定なものがインストールされてしまう.
この状態は障害を生みやすいので,動いている状態で一旦固めてしまうのが良い.
というわけで,このパッケージ intervention/image
の正式バージョン名を調べる.
バージョンを調べる
ダメだった方法
- composer.lock を見る
composer show -i
から目的パッケージを探して見る
よかった方法
composer show -i packagename
して目的パッケージの詳細情報を見る
ダメだった方法は2つは,
- composer.lock を見る
{
"name": "intervention/image",
"version": "dev-master",
"source": {
"type": "git",
"url": "https://github.com/Intervention/image.git",
"reference": "e82d274f786e3d4b866a59b173f42e716f0783eb"
},
...略...
},
composer show -i
から目的パッケージを探して見る
$ composer show -i
…略…
intervention/image dev-master e82d274 Image handling and manipulation library with support for Laravel integration
という感じで,composer.jsonに書ける形式のバージョンはわかりませんでした.
よかった方法は, composer show -i intervention/image
する方法.
$ composer show -i intervention/image
name : intervention/image
descrip. : Image handling and manipulation library with support for Laravel integration
keywords : gd, image, imagick, laravel, thumbnail, watermark
versions : * dev-master, 2.4.x-dev
type : library
…略…
versionsのところに, * dev-master
と 2.4.x-dev
が書かれている.
これの 2.4.x-dev
がいまインストールされているバージョンとわかる.
固定バージョンを適用する
バージョンがわかったらcomposer.jsonを以下のように書き換える.
{
"name": “test”,
"description": “this is test server",
"keywords": ["framework", "laravel"],
"license": "",
"type": "project",
"require": {
"intervention/image": "2.4.x-dev”,
},
}
あとは $ composer update
すればOK!