読者です 読者をやめる 読者になる 読者になる

k-holyのPHPとか諸々メモ

Webで働くk-holyがPHP(スクリプト言語)とか諸々のことをメモしていきます。ソースコードはだいたいWindowsで動かしてます。

Composerの使い方を調べたメモ(2) GitHubのリポジトリをPackagistに登録してcomposerでインストール

Composerの使い方を調べたメモ(1)の続きです。
ライブラリ側のcomposer.jsonの書き方を調査する成り行きで、Githubに登録しているバリデーションライブラリをPackagistに登録し、composerでインストールしてみました。

composer.json

require にPHP 5.3.3以上って書いてますが、超テキトーです(汗)
バージョン番号も今回初めて付けました。まあ、実質自分専用なんで…。

実はPackagistへのアカウント登録は早めに済ませていたので(Twitterでは叶わなかったID確保のため…)、後はGithubリポジトリのトップにcomposer.jsonをコミットして、PackagistでリポジトリのURLを登録するだけでOKでした。

登録完了後、パッケージのトップ画面に、自動アップデートが有効になってないからGithubのServiceHook設定しろ、みたいなメッセージが表示されるので、その通りに設定します。

GitHubの対象リポジトリで「Admin」→「Service Hooks」と選択するとズラズラーっとリストが表示されるので、Packagistを選択して指示に従います。


Token入力欄にPackagistのProfile画面に表示されているAPI Tokenを入力し、「Active」にチェックを入れて更新。

「Service settings saved successfully!」と表示されたらOKです。

なお、GitHubとPackagistのユーザー名が違う場合は、User欄にPackagistのユーザー名を入力しないといけないみたいです。

Packagistのパッケージトップ画面(http://packagist.org/packages/volcanus/validation)に戻ってリロードすると、例のメッセージが消えてます。
これでGitHubにpushすれば自動的にPackagistも更新してくれるはず。

そしていよいよ、composerを使ってPackagistからのインストール。
composer.jsonはなんやかんやで、今はこういう状態になっています。

$ php composer.phar update
Updating dependencies
  - Installing volcanus/validation (dev-master)
    Cloning 5aca0c4effd265bf8af8610b88fb7e5bd4ef74af

Writing lock file
Generating autoload files

無事にインストールできました!
/vendor/volcanus/validation/ 以下にソースが入りました。
/vendor/composer/autoload_namespaces.php はこのような状態になっています。

/vendor/composer/installed.json にはこのような記述が追加されてます。

PHPTALやSmartyはまだ使ってませんが、このようなサンプルが無事に動作しました。
名前空間を使い、PSR-0に準拠しているライブラリであれば、composerのオートローダへの登録も簡単にできました。

最後にGitHubにpushして、Packagistに即時反映されるか確認します。
composer.jsonの keywords が空だったので、「validation」と入れました。

GitHubのリポジトリにpushしたところ、Packagistの方でも更新されて、ライブラリ名の隣に「validation」と表示されました。

すでにGitHubを利用していれば、Packagistへの登録作業自体はとても簡単です。
ForkもPull Requestもしたことがないような、GitHubを活用しているとはとても言えない自分でも、問題なくPackagistに登録してcomposerでインストールできるようになりました。
composer.jsonの記述についても、今回の例のようにほとんど依存を持たないライブラリの場合は悩むこともありません。

非公開な実験レベルのアプリケーションを書く際も、composerを使えばライブラリの同期が楽になるのは間違いないので、今後も積極的に活用したいと思います。

[追記]
続きを書きました。Composerの使い方を調べたメモ(3) 名前空間を使わないPSR-0準拠のライブラリをオートロード