Help us understand the problem. What is going on with this article?

composer.json、composer.lockって何なの?という人向けのまとめ

composer.jsonとは

依存するパッケージを定義するためのファイル。
自分で作成するか、composer initで対話的に作成できる。

iniコマンドでは、Public RepositoryであるPackagistから依存パッケージを検索・選択することが出来る。

Packagistとは

composerの中央公開リポジトリ。だれでもパッケージを公開できる。
facebookのsdkやphpunitなど様々なパッケージが公開されてます。

https://packagist.org/

composer.jsonの中身

composer.json
{ 
    "require" : {
        "facebook/php-sdk" : "4.0.*"
    },

    "require-dev": {
        "phpunit/phpunit": "3.7.*"
    }
}

requireについて

  • 依存をパッケージ名:バージョンで指定する
  • バージョンは"1.0.*"のようなワイルドカードなどが使える

require-devについて

  • 開発時のみに依存するパッケージを書く

依存するパッケージをインストールする

composer installを実行する

  • composer.jsonを元に依存解決し、パッケージのダウンロードを行いvendor/に配置される
  • composer.lockというファイルが同階層にない場合はダウンロードしたパッケージのバージョン情報を書き出す。

composer.lockを更新したい場合はcomposer updateを使う

composer.lockについて

  • installコマンド実行時に、composer.lockファイルが存在する場合はcomposer.lockに書きだされているバージョンをダウンロードする。
  • チーム間で同じバージョンをダウンロードするためなので、composer.lockも一緒にコミットをすること。

2015年11月17日追記

特定のパッケージのみ更新したい場合

  • composer.jsonの値を更新したいバージョンに書き換える
  • composer update [更新したいパッケージ名]を実行
  • 更新後のライブラリがインストールされ、composer.lockが最新に上書きされる
Why do not you register as a user and use Qiita more conveniently?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away