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などで、転送する方法もありますね。
リリースやデプロイの前に、後々の管理方法を考えておきましょう。