Composerで依存パッケージのcomposer.lockは使われるのか?

rootのcomposer.lockにバージョンが記載されていれば、composer installした場合は、その記載バージョンのパッケージがインストールされます。

では、依存パッケージにcomposer.lockがある場合は、どうなるのでしょう?

確認してみましょう。

現在、Ray.Diにはcomposer.lockが含まれています。そして、doctrine/annotationsのバージョンがv1.2.1になっています。

検証方法

まず、フォルダを作成し、rootのcomposer.jsonを作成します。

{
  "require": {
    "ray/di": "~2.0@dev"
  },
  "minimum-stability": "dev",
  "prefer-stable": true
}

composer installします。

$ composer install
Loading composer repositories with package information
Installing dependencies (including require-dev)
  - Installing nikic/php-parser (v1.0.2)
    Loading from cache

  - Installing doctrine/lexer (v1.0)
    Loading from cache

  - Installing doctrine/annotations (v1.2.3)
    Loading from cache

  - Installing ray/aop (2.0.0-alpha)
    Loading from cache

  - Installing ray/di (dev-develop-2 92cd0e3)
    Cloning 92cd0e3d1f2feb8dbaaed7350e2f55d5af9a2a96

Writing lock file
Generating autoload files

上記のようにdoctrine/annotationsv1.2.1ではなくv1.2.3がインストールされました。

結論としては、依存パッケージのcomposer.lockは使われないということになるようです。

ライブラリ(公開するパッケージ)にcomposer.lockを含めるかどうか?

(14:02 追記)

Composerの公式ドキュメントにちゃんと書いてありました。

For your library you may commit the composer.lock file if you want to. This can help your team to always test against the same dependency versions. However, this lock file will not have any effect on other projects that depend on it. It only has an effect on the main project.
-- https://getcomposer.org/doc/02-libraries.md#lock-file

まとめると、

  • ライブラリにはcomposer.lockを含めたい場合は含めてもいい
  • そうすれば、そのライブラリの開発チームはいつも同じ依存バージョンを使いテストすることができる(composer installすれば)
  • しかし、そのライブラリを使用するプロジェクト(アプリケーション)には影響しない(上で見たようにcomposer.lockは使われないため)
  • composer.lockはメインプロジェクト(rootにある場合)にしか影響しない

結論としては、composer.lockは含めても含めなくてもどっちでもいいみたいですね。

関連

Tags: php, composer

Phalcon Tips (Ja) を公開します

この記事はPhalcon Advent Calendar 2014の25日目です。昨日はk-holyさんの「Phalcon\Mvc\Micro のイベント処理順序とお手軽CSRF対策」でした。

まだ、コンテンツがほとんどありませんが、Phalconに関するTipsを日本語で共有するサイト

を公開します。

英語サイトPhalcon Tipsの日本語版です。

ソースもデザインもほぼそのままです。Thanks to Phalcon Tips!

実はYet Another Framework(Yaf)で作られています、なんてことはなく、Phalconで作られています。

Phalcon Tips自体が、PhalconのForum(Phosphorum)を元にしていますので、 「Phalcon Forum(Phosphorum)を動かしてみる」を見ると雰囲気が少しわかるかも知れません。

ソースコードは以下にあります。

もし、バグなどありましたら、Pull Requestしてみてください!

それと、昨日書きましたが、Phalcon/Zephirプロジェクトが寄付を募っています。

寄付が集まれば、Phalcon/Zephireの開発が加速します。詳細は上記記事をご覧ください。

この記事はPhalcon Advent Calendar 2014の25日目です。メリークリスマス!

関連

Tags: phalcon

Phalcon/Zephirファンディング(寄付)キャンペーン

Phalcon/Zephirのファンディングキャンペーンが開始されています。Phalcon/Zephirの開発のための資金を集めるものです。

詳細は、以下のフォーラムにあります。

ファンディングと言っても寄付を募るものです。以下のサイトで寄付を受け付けています。

目標額は30,000米ドルです。現在、1,075ドルが寄付されています。

Phalcon/Zephirの目標として、以下があげられています。

  • 1年間専従のコア開発者1、2名に給与を払う
  • コミュニティからのリクエストの多いものを現実的な期間で開発する
  • フォーラムとStackOverflowで高品質の回答を提供する
  • 新しいバージョンをどんどんリリースする
  • LTS(長期サポート)版を提供する

Phalcon固有の目標として以下があげられています。

  • ドキュメントのカバー率を改善する
  • 初心者、中級者、上級者向けのチュートリアルやサンプルをもっと作成する
  • テストスィートを拡張し、テストカバー率を上げ、フレームワークの品質を向上させる

寄付は以下で受け付けています。

(15:03 追記)

バナーがあったので追加してみました。

Click here to lend your support to: Phalcon/Zephir Donation Fund and make a donation at pledgie.com !

関連

Tags: phalcon, zephir