PHP パッケージを composer でインストールできるようにする
2018-07-23やりたいこと
PHP のアプリケーションで外部ライブラリ等を使用する場合、最近は composer を使ってインストールすることがほとんどです。 自分で作ったライブラリ (的なもの) も composer を使ってインストールできるようにしたい。 ということで、そのためにやったことのメモです。
前提
- GitHub に公開しているリポジトリを対象とする
今回は、GitHub で公開している text-to-color というリポジトリを、composer でインストールできるようにします。
ちなみに text-to-color は、文字列からカラーコードを生成する、ただそれだけのスクリプトです。
手順
1. composer.json ファイルを作成する
リポジトリの直下に composer.json
ファイルを作ります。
$ composer init
上記コマンドを実行すると、パッケージ名称や作成者などの情報を対話的に入力することで、composer.json ファイルを生成できます。もちろん手作業で作っても問題ありません。 以下のような json ファイルが生成されます。
{
"name": "michimani/text-to-color",
"version": "0.1.0",
"description": "text-to-color is a simple php class for generating color code from text.",
"license": "MIT",
"require": {
"php": ">= 5.6.0"
},
"autoload": {
"psr-4": {
"Michimani\\TextToColor\\": "src/"
}
}
}
autoload
を記述すると、インストールするアプリケーションの autoload.php
に自動で追加されるようにできます。
その下の psr-4
は、このライブラリで namespace を利用している場合の記述です。
その他、composer.json に関する公式ドキュメントは こちら
composer.json が作成できたら、リポジトリに push しておきます。
2. Packagist にリポジトリを登録する
Packagist とは、composer でインストールできる PHP パッケージが集約された場所です。 ここへの登録は必須ではありませんが、登録しておくと、より簡単にインストールができるようになります。
登録方法は簡単で、まずは Packagist のアカウント作成からです。GitHub アカウントで作成できます。
右上の Submit から、GitHub のリポジトリの URL を入力します。
このとき、リポジトリに composer.json が無い場合は登録できません。
これで Packagist への登録は完了です。 しかし、下記のようなアラートが出ていると思います。
これは、GitHub へ更新があったときに Packagist にもその更新を反映するために手動で操作をしなければならないという内容です。 自動アップデートの設定は以下のとおりです。
- Packagist のマイページで API Token を取得します (Your API Token と書かれているところです)
- GitHub のリポジトリ画面から Settings > Integrations & services 進みます
- Add Service から Packagist を選択します
User
に Packagist のユーザ名、Token
に API Token を入力して、Active にチェックを入れて Add service ボタンを押します- 追加したサービスの詳細画面にある Test service ボタンを押して
Okay, the test payload is on its way.
と表示されれば設定完了です
3. インストールしてみる
実際に composer を使ってインストールする前に、パッケージの情報が取得できるか確認します。
$ composer search michimani/text-to-color
michimani/text-to-color text-to-color is a simple php class for generating color code from text.
正しく登録でいていれば、パッケージ名と説明が出力されます。
あとは、インストールしたいプロジェクトで下記コマンドを実行すればインストールできます。
$ composer require michimani/text-to-color
comments powered by Disqus