composerでpsr0に対応してないパッケージ、backlogなどの非公開リポジトリの対応方法

Twitter ツイート Hatena Bookmark ブックマーク

最近composerとsymfony2が大好きなポリドッグです。

本当にsymfony2素晴らしいです。僕はずっとsymfony2というかsymfonyが使いたくてしょうがなかったわけですが、やっとプロダクトとして使うことが出来そうです。
フレームワークが何かもわからなかったあの頃ですが、それでもsymfonyに憧れていたわけです。
当時はPHP4がまだまだ現役でPHP5からじゃないと使えないsymfonyがなんか最先端な感じがしました。すごくキラキラしてました。
でも僕が結局業務で使うようになったのはcakephpなわけで、結局使う機会がなかったかったと。。。

ってのはどうでもいいですね。composerの話です。

Symfony2でも採用されていて、最近フレームワークやライブラリはcomposer対応している事が多いです。
便利なcomposerですが、PSR-0に対応していないライブラリや非公開なリポジトリをcomposer使ってインストールしたい場合にちょっと困ってしまいます。

そこでこんな書き方すれば解決できるよ!って方法を記載しておきます。これ読んどけば他のライブラリとかにも十分応用可能かと思います。

tar.gzなどで公開されているリポジトリの場合

repositoriesにタイプ、バージョン、名前、urlなどの情報を記載します。 また、オートローダがどう扱ってほしいかを、autoloadの部分に記載します。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
{
  "autoload": {
    "psr-0": {
      "": "src/"
    },
    "classmap": ["vendor/google/google-api-php-client/src"]
  },
  "repositories": [
    {
      "type": "package",
      "package": {
        "name": "google-api-php-client",
        "version": "0.6.2",
        "dist": {
          "url": "http://google-api-php-client.googlecode.com/files/google-api-php-client-0.6.2.tar.gz",
          "type": "tar"
        }
      }
    }
  ],
  "require": {
    "php": ">=5.3.3",
    "google/google-api-php-client": "0.6.2"
  }
}

非公開のgitリポジトリを扱う場合

この場合は今はBacklogのgitリポジトリをcomposerでインストールする方法という想定にします。
※もちろんgitの為の公開鍵は登録済みとします。

repositoriesに必要な情報を書きましょう。 また、バージョン指定を主導で行うので、あらかじめバージョン番号の方針は決めておいたほうが良いかと思います。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
{
  "autoload": {
    "psr-0": {
      "": "src/",
      "Polidog\\": "vendor/polidog/test/src"
    },
  },
  "repositories": [
    {
      "type": "package",
      "package": {
        "name": "polidog/test",
        "version": "0.1",
        "source" : {
          "url" : "[email protected]:/POLIDOG_TEST/test.git",
          "type": "git",
          "reference": "develop"
        }
      }
    }
  ],
  "require": {
    "php": ">=5.3.3",
    "polidog/test": "0.1",
  },
}

プロダクション環境で、利用しても問題なく扱えると思います。 ぜひ積極的にcomposerでライブラリの管理を行ってみてはいかがでしょうか?

comments powered by Disqus
Built with Hugo
テーマ StackJimmy によって設計されています。