Composerのプロジェクトを公開して使う

CodeZine / 2014年9月5日 14時0分

図3 packagistでの登録処理2

 本連載では、Composerを使ったパッケージ管理を紹介します。前回は、ライブラリを作成する方法を通じて、composer.jsonの記述方法を紹介しましたが、今回は、作成したライブラリを社内向けなど限られたプライベート上に公開し利用する方法や、Packagistサイトにも公開する方法を紹介します。

■対象読者

 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フォルダなどは最初から除外されるようになっていますので、その設定を利用することをお勧めします。

図1 GitHubでのリポジトリ作成


 続いて、composer.jsonを作成します。

リスト1 サンプルの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コマンドを実行すると指定した除外リストをのぞいたアーカイブが作成できます。

リスト2 アーカイブの作成方法
$composer archive --format=zip
 筆者は公開するためのリポジトリ(ローカルのSubversion)と公開するためのリポジトリ(Github)を分けているため、これらのリポジトリ間でファイルをコピーする際にこのコマンドを利用して、関係ないファイルを除外するようにしています。

 社内利用などの場合には複数のリポジトリを持つことはないと思いますので、リリース手順としてタグやブランチとして利用する場合などに利用できるテクニックです。



CodeZine

トピックスRSS

ランキング