対象読者
PHPで開発を行っている方を対象としています。
必要な環境
この記事では、PHP 5.5を使用し、Windows 8.1、Linux(CentOS6.3)、Mac OSX(10.9)の環境で確認を行っています。ただし、Composer自身はPHP5.3.2以上からサポートしています。
公開するライブラリを作成する
公開するためのライブラリを作成するには、基本的には作成したソースコードをバージョン管理などに登録し、外部より参照可能にすることと基本的には変わりません。しかしながら、インストール対象となるファイルは管理しているファイルがすべて対象です。そのため、プロジェクトを公開するためのリポジトリ管理の際に以下のことに気をつけます。
- vendorフォルダ以下を登録しない
- composer.lockを登録しない
これらは開発時には必要になりますが、登録した状態で公開してしまうと利用者の環境にもコピーされてしまいます。ただし、利用者からはAutoload機能により使えるものではないので、これらは登録する必要はありません。
また、参考までにGitHubを用いてリポジトリを作成する場合には「Add .gitignore」ボタンから「Composer」を選択すると、vendorフォルダなどは最初から除外されるようになっていますので、その設定を利用することをお勧めします。
続いて、composer.jsonを作成します。
{ "name" : "coltware/xtable", "type" : "library", "description" : "create table ddl from xml", "keywords" : ["database" , "xml" ], "homepage" : "https://github.com/coltware/xtable", "license" : "MIT", "authors" : [ { "name": "coltware", "homepage": "https://github.com/coltware/xtable", "role": "Author" } ], "require": { "php" : ">=5.3.0" }, "autoload" : { "psr-4" : { "coltware\\xtable\\" : "src/main" } }, "archive" :{ "exclude" :[ "/vendor", "/composer.lock", "/*.iml", "/sample", "/.*" ] } }
リスト1は、本記事用に実際にGitHubに公開したcomposer.jsonです。指定の意味は、前回や前々回などの記述を参考にしてください。また、ここで新たな追加としては"archive"という指定があります。この指定は、実際のリポジトリからアーカイブファイルを作成するときに、そのリポジトリから除外するファイルやフォルダ一覧になります。
実際に開発を行っているフォルダ配下で、以下のようなarchiveコマンドを実行すると指定した除外リストをのぞいたアーカイブが作成できます。
$composer archive --format=zip
筆者は公開するためのリポジトリ(ローカルのSubversion)と公開するためのリポジトリ(Github)を分けているため、これらのリポジトリ間でファイルをコピーする際にこのコマンドを利用して、関係ないファイルを除外するようにしています。
社内利用などの場合には複数のリポジトリを持つことはないと思いますので、リリース手順としてタグやブランチとして利用する場合などに利用できるテクニックです。