こんにちは。 @hacktk です。この記事はイノベーター・ジャパンAdvent Calendar 2018の3日目の記事です。
今回Composerのパッケージを作成して公開したので、その手順を書きます。(Laravel特有のtipsも少し書いています。)
手順を説明する前に、つくったもののリンクを貼っておきます。この記事では最低限のものしかつくりませんが、他にもいろいろと足しています。
ではさっそく作りましょう。
リポジトリをつくる
GitHubにPublicなリポジトリをつくりましょう。(最初の作成自体の手順は割愛します。)
composer.jsonを書く
リポジトリのトップ階層に置くcomposer.jsonをつくります。
composer init
で雛形を作れます。
{ "name": "your-account/package-name", "authors": [ { "name": "your-name", "email": "your-email@example.com" } ], "require": {} }
composer.jsonはいろいろな情報を書くことができますが、最低限これだけあれば公開できます。
READMEを書く
READMEは利用者のためにも必ず書きましょう。
何を書けば良いかわからない場合は、以下のものだけでも。
- パッケージの名前
- インストール方法
- 簡単な使い方
- ライセンス(GitHubの機能でLICENSEファイルを作れます)
パッケージのコードを書く
実際のパッケージを作りましょう。
気を付けるのは以下の点です。
- 必須ではありませんが、
src
ディレクトリにコードを置くことが多いようです - テストはなるべく書きましょう
- 書いたらautoloadセクションをcomposer.jsonに追加します
- これにより、
use InnovatorJapan\LaravelCsv\[Class名]
という名前空間が使えるようになります
- これにより、
"autoload": { "psr-4": { "InnovatorJapan\\LaravelCsv\\": "src/" } }
(おまけ)Laravelのパッケージでのtips
1️⃣ auto-discoveryを使う
Laravel5.5以降には、ServiceProviderを自作した場合に自動でそれを登録してくれるauto-discoveryという機能があります。
composer.jsonのextraセクションに以下のように書きます。
"extra": { "laravel": { "providers": [ "InnovatorJapan\\LaravelCsv\\CsvServiceProvider" ] } }
2️⃣ orchestra/testbenchを使う
Laravelのパッケージを開発していて困るのが、テストを書く際にLaravel特有の機能(サービスコンテナやMigrationなど)が使えないということです。
orchestra/testbench
パッケージをインストールすると、それらが使えるようになります。
"require-dev": { "orchestra/testbench": "^3.6" }
Packagistに登録する
ここまでできたらあとは公開するだけなので、Packagistに登録しましょう。
登録する
- Sign inする
- Packagist にアクセスします
- 右上の
Sign in
から新規に登録します- Use GitHubが楽でおすすめです
- リポジトリを登録する
- Submit package にアクセスします
Repository URL
にリポジトリのURLを入力してCheckボタン、あとは画面のとおりに
- これで完了です
(おまけ)tips
1️⃣ 不要なファイルがインストールされないようにする
このままだと、使う側に不要なファイルもインストールされてしまいます。
.gitattributes
に不要なファイルを書くことで、これらをPackagistへの登録から除外することができます。
/.gitattributes export-ignore /.gitignore export-ignore /phpunit.xml export-ignore /tests export-ignore /README.md export-ignore
2️⃣ インストールされるバージョンを指定できるようにする
このままだと、使う側は最新バージョン(dev-master)しかインストールできません。
gitの機能でtagを打つことで、使う側はtag指定でインストールできるようになります。
$ git tag 1.0.0 $ git push origin 1.0.0
おわりに
今回の記事は、自分が初めてパッケージの公開をしたときのメモを手直ししたものです。
「あなたもOSSを書いて貢献!💪」というと少しハードルが高いと感じるかもしれませんが、社内のリポジトリで良く使われる処理をライブラリとして切り出す、と考えればやりやすいかなと思います。
まずは周囲の人の役に立つライブラリから始めてみませんか。
さて明日のアドベントカレンダー担当は、もうすっかり東京の人になってしまったオシオさんです。お楽しみに!
それでは。