今回は最近初めてFlutterで外部ライブラリを公開したので、それまでに必要な工程や手順を備忘録として解説したいと思います。
今回公開したライブラリ(宣伝)↓
https://pub.dev/packages/flat_material_tags
簡単に言うと可変長のマテリアル風タグ、ラベルのWidgetを作成できるライブラリです。
複数選択肢を選ばせて画面に表示する際にこのような可変長のラベルUIを採用しているサービスが増えている印象があったので、Flutterで簡単に作成できればいいなと思って作ってみました。
良ければ使ってみてください。(バグとかあったら連絡いただけるとありがたいです。)
目次
まずはライブラリの中身を開発する
ライブラリ用のプロジェクトを作成
まずは通常のプロジェクトを作成するように下記コマンドを叩いてライブラリ開発用の新規プロジェクトを作成します。
flutter create --template=package [ライブラリ名]
–template=の後ろにはpackageかpluginのどちらかを指定します。
package: Dartのみで記述する場合はこちら。Widgetのパッケージを開発する場合はこちらで問題ないと思います。
plugin: Dart以外にもiOSやAndroidのネイティブのコードを記述する場合はこちら。
コマンドを叩いて下記のように表示されたらプロジェクト作成完了です。
$ flutter create --template=package ライブラリ名
Creating project variable_twin_tags...
variable_twin_tags/LICENSE (created)
variable_twin_tags/test/ライブラリ名.dart (created)
variable_twin_tags/ライブラリ名.iml (created)
variable_twin_tags/.gitignore (created)
variable_twin_tags/.metadata (created)
variable_twin_tags/pubspec.yaml (created)
variable_twin_tags/README.md (created)
variable_twin_tags/lib/ライブラリ名.dart (created)
variable_twin_tags/.idea/libraries/Dart_SDK.xml (created)
variable_twin_tags/.idea/modules.xml (created)
variable_twin_tags/.idea/workspace.xml (created)
variable_twin_tags/CHANGELOG.md (created)
Running "flutter pub get" in ライブラリ名... 1.6s
Wrote 12 files.
All done!
Your package code is in ライブラリ名/lib/ライブラリ名.dart
実際に開発する
プロジェクトを作成したら実際にライブラリの中身を開発して行きましょう。
ライブラリ開発と言っても特別難しい事をするわけではなくて、普段の開発で別ファイルに切り分けたりするのと同じことをするだけです。
例えば普通のFlutterプロジェクトを開発していたとして、複数画面で使いまわしたいWidgetがある時に、通常なら別ファイルに切り分けて使い回す所をライブラリ用プロジェクトに記述していくイメージです。
デバッグをする際は別に普通のFlutterプロジェクトを作成してpubspec.yamlに開発してるライブラリのディレクトリのパスを指定すると公開されているライブラリと同じように使えるようになるのでそれで確認しながら開発しましょう。
dev_dependencies:
flutter_test:
sdk: flutter
ライブラリ名:
path: /input/your/library/path
公開情報やメタ情報を記載する
ライブラリを公開するにはルートディレクトリ配下の下記のファイルにライブラリの公開情報などを記入する必要があります。
CHANGELOG.md
ライブラリの更新履歴をマークダウン形式で記載します。記載内容がそのままpub.devに表示されます。
LICENCE
ライブラリのライセンスを記載するファイル。
ライセンスについてよくわからない人はBSD-3-Clauseを採用しましょう。(Dart自体が採用しているため。)
↓文言をコピペして<YEAR>と<COPYRIGHT HOLDER>を変更すればOK
Copyright <YEAR> <COPYRIGHT HOLDER>
Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
3. Neither the name of the copyright holder nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
README.md
作成したライブラリの説明や使い方をマークダウン形式で記載します。ライブラリページのトップ画面に表示されるので、より多くの開発者に使ってもらえるようにスクショやサンプルコードを表示して直感的に伝わるように、そして英語で記載するのがおすすめ。
pubspec.yaml
下記項目を埋めればOKです。
name
パッケージ名を記載します。
description
アプリの説明文を記載します。60文字から180文字位を推奨されています。
version
ライブラリのバージョンを記載します。同じバージョンを複数上げることはできないので、ライブラリをアップデートした際にはここも一緒に変更します。
homepage
一般的にはGitHubのリポジトリのリンクがいいです。
flutter
対応しているプラットフォームを記載します。iOSとAndroidでしか動作確認をしてない場合は何も記述しなくて大丈夫です。
公開してみる!
中身の開発が終わったら実際にpub.devに公開してみましょう。その前に↓のコマンドでプロジェクトに不備がないか確認します。
pub publish --dry-run
何もエラーがでなければ↓コマンドを叩いて公開します。
pub publish
メール認証をして、下記のような文言が出れば無事pub.devに公開されています。お疲れさまでしたー。
Waiting for your authorization...
Authorization received, processing...
Successfully authorized.
Uploading... (3.1s)
Successfully uploaded package.
備忘録なのでかなり適当な説明でしたが実際の公開への流れを記載してみました。思ったよりも簡単に開発できるので是非挑戦してみてくださいねー。