Composerでローカルのパッケージを取り込む
タグ: Composer
Composerはパッケージをインストールしてくれます。
自分や会社で使用しているライブラリーなどもパッケージとして利用できますよ。
今回は同じコンピューター内にあり、Gitでバージョン管理を行なっているソースを取り込んでみましょう。
サンプルを通して学習します。実例を通して見てもらえば、一発で理解できます。Composerの仕組みを理解するにも最適でしょう。
ディレクトリー構造
ホームディレクトリーかどこか適当な場所に、以下の構造でディレクトリー/ファイルを設置します。
+ ComposerPrivateRepoTest + DummyProject - composer.json - test.php + RepoProject + src + Ralabel - Output.php - composer.json
後片付けが簡単なように、同じディレクトリー下にリポの提供側と、利用側を置いています。
リポ提供側
RepoProject
がリポ提供側のディレクトリーです。
src/Ralabel
以下をPSR-0規約でオートローディングするように、composer.jsonで指定してあります。Output.phpがダミーのライブラリーファイルです。
<?php namespace Ralabel; class Output { static function sample() { return "エアコン・扇風機の適正使用を!"; } }
composer.jsonは提供のための情報をメインで設定しています。最低限度のものだけです。
{ "name": "sample-vendor/ralabel", "description": "Composerサンプルプロジェクト", "license": "MIT", "autoload": { "psr-0": { "Ralabel\\": "src/" } } }
description
とlicense
は省略できるのですが、composer validate
でチェックする時に警告メッセージが表示されるため、入れてあります。
PSR-0規約ではないライブラリーやパッケージは、クラスマップでも指定できます。クラスを使用していないコードはfiles
で取り込めますが、リクエストを受けたり、コマンドラインから起動駈けられると、必ず読み込まれます。
このディレクトリーはGitリポにします。
git init git add --all git commit -m "initial commit"
これでデフォルトであれば、master
ブランチが用意されます。ブランチ名も重要です。他のものも利用できます。
リポ利用側
利用側でメインとなるのはcomposer.jsonのみです。
{ "repositories": [ { "type": "vcs", "url": "/home/hiro/ComposerPrivateRepoTest/RepoProject/" } ], "require": { "sample-vendor/ralabel" : "dev-master" } }
composerのデフォルトはpackagistに指定されたパッケージを探しに行きます。今回のローカルライブラリーは、当然登録していませんので、読み込み先を指定する必要があります。それがrepositories
セクションです。
type
はvcs
、バージョンコントロールシステムです。Git以外も使えますが、まあGitでしょう。url
は通常リポのあるURLを指定します。ローカルの場合はご覧の通り、絶対パスでディレクトリーを指定してください。当然皆さんの環境では、絶対パスは異なるはずです。変更してください。
今回はローカル上のリポですが、当然ながらWeb上のリポを指定可能です。
require
セクションではパッケージを指定します。その時のバージョンにブランチを指定し、コミットされている最新版を取り込めます。dev-master
はmasterブランチから取り込みます。ですからどのブランチも利用できるのですが、名前を覚えておくのが重要だったわけです。
では、リポを取り込んでみましょう。
composer install
vendorディレクトリーが作成され、オートローダーとsample-vendor/ralabel
がコピーされます。
では、実際に動くか確かめましょう。test.phpを作成します。
<?php include_once "vendor/autoload.php"; use Ralabel\Output; echo Output::sample();
コマンドで実行しましょう。
php test.php
ライブラリーからリターンされた文字列が表示されます。
リリース時の注意
言うまでもなく、composer.jsonはローカルファイルを示しています。そのままどこかのサーバーへcomposer.jsonを上げてcomposer install
でインストールできませんし、composer update
で自前パッケージを更新することもできません。
公開できるものであればGitHubにあげてしまう手があります。公開できなければGitHubを始め有料・無料のプライベートリポを利用するか、もしくは自前の公開サーバーをお持ちなら、そこから読めるようにしましょう。
もしくは、リリースしたサーバーではcomposer操作を行わず、ローカルで作業したものを常にFTPやrsyncなどで、転送する方法もありますね。
リリースやデプロイの前に、後々の管理方法を考えておきましょう。