Dartパッケージをサクッと作成する
2023.03.07
この記事は最終更新日から1年以上が経過しています。
Dartにもnpmみたいにpub.devというパッケージを管理するソリューションが提供されており、沢山のパッケージが作成されております。
今回は、pub.devに自作のパッケージを公開までの手順となります。
2種類のパッケージ
Dart、Flutterには2種類のパッケージがあります。
- Dart パッケージ
- Plugin パッケージ
Dartパッケージは、名前の通りDart で書かれたパッケージとなります。Pluginパッケージに関しては、ネイティブAPIを使ったパッケージとなります。Androidや、iOS、Web、macOS、Windows、Linuxなどの組み合わせに対して作成可能となっております。
テンプレート作成
今回は、Dartパッケージなので、dartコマンドでテンプレートを生成します。
$ dart create --template=package [pakage_name]
[pakage_name]は任意のパッケージ名となります。今回は、仮に「webcyou」としておきます。
実行すると、以下の様なファイルが生成されます。
.gitignore analysis_options.yaml CHANGELOG.md pubspec.yaml README.md example/webcyou_example.dart lib/webcyou.dart lib/src/webcyou_base.dart test/webcyou_test.dart
何はともあれ、ディレクトリに移動し、早速実行してみます。
$ cd webcyou $ dart run example/webcyou_example.dart
dart runコマンドを実行すると以下の様に出力されます。
awesome: true
ソース、ファイルを確認していきましょう。
メインファイル
パッケージ作成のメインとなるのは、lib以下の「lib/webcyou.dart」と「lib/src/webcyou_base.dart」ファイルとなります。
「lib/webcyou.dart」はパッケージファイルとしてexportしており、メイン処理を行っているのは「lib/src/webcyou_base.dart」ファイルとなりますが、ここは自由に変更されて問題ないかと思います。
「lib/src/webcyou_base.dart」ファイルは、boolを返却する関数が確認できます。
class Awesome { bool get isAwesome => true; }
Testファイルも生成されております。
import 'package:webcyou/webcyou.dart'; import 'package:test/test.dart'; void main() { group('A group of tests', () { final awesome = Awesome(); setUp(() { // Additional setup goes here. }); test('First Test', () { expect(awesome.isAwesome, isTrue); }); }); }
example作成
その他に、使用例を記述する、exampleフォルダも生成されております。
こちらは、pub.devのexample項目にそのまま出力される形のようです。
CHANGELOG.mdファイルも同様にpub.devのchnagelogの項目に出力されます。
その他、必要なファイル作成
dartコマンドで生成されたファイルに関しては、基本すべて必要となります。
READNE.mdも各項目に関して、作成して行きましょう。
## Features TODO: List what your package can do. Maybe include images, gifs, or videos. ## Getting started TODO: List prerequisites and provide or point to information on how to start using the package. ## Usage TODO: Include short and useful examples for package users. Add longer examples to `/example` folder. ```dart const like = 'sample'; ``` ## Additional information TODO: Tell users more about the package: where to find more information, how to contribute to the package, how to file issues, what response they can expect from the package authors, and more.
pubspec.yamlファイルに関しては、パッケージ名、バージョン、パッケージについての説明、パッケージのサイトURLなどを定義するファイルとなっておりますので、修正の必要がある場合は修正しましょう。
analysis_options.yamlファイルに関しては、静的解析を定義するファイルなので、最初から追加されている package:lints/recommended.yaml以外に定義が必要な場合は追加しましょう。
ライセンス作成
Dartパッケージに関しては、ライセンス表記であるLICENSEファイルが必要となり、これがないとpub.devの方にパッケージを公開することができません。
ライセンスに関しては、Dartでも使用されている BSD 3-clauseライセンス が推奨されていますが、MITなどでも問題無い様なので、パッケージに適したライセンスを選択しましょう。
検証済みパブリッシャーの登録
パッケージを公開する時、検証済みパブリッシャー(verified publisher)での公開を推奨されています。これは、身元確認済みのパブリッシャーで、独自のドメインをお持ちで、Google Search Console.と連携を行うことで登録できます。
手順としては、pub.devにgoogleアカウントでログインし、メニューの「Create publisher」を押下し登録ページに遷移します。
パブリッシャーに関連付けるドメイン名を入力しGoogle Search Console.と連携を開始させます。
この時、DNSの登録等必要ですが、詳細に関しては次回などでも書いて行きたいと思います。
検証済みパブリッシャー(verified publisher)登録することによって、以下の様なメリットがあります。
- 認証バッジが表示される。パッケージを利用するユーザに周知
- 個人のメールアドレスを非公開
公式サイトに記載されている手順は以下から確認できます。
パッケージ公開
ということで、パッケージの公開準備が整いましたので、パッケージを公開していきたいのですが、ファイルなど揃っているか dry runオプションを付け確認していきます。
$ dart pub publish --dry-run
ファイルが不足しているなど問題がある場合はコンソール画面に表示しますので、確認し修正します。問題がなければ、以下のコマンドで公開していきましょう。
$ dart pub publish
初めての場合は、コンソール画面にURLが表示しますので、そちらのURLをブラウザで開きGoogleアカウントでログインすることによって認証認可が通り、パッケージが公開されます。
作成したパッケージ
といったわけで、今回作成したパッケージは重み付けランダム選択のパッケージとなります。
weighted_random: 0.2.0
https://pub.dev/packages/weighted_random
良ければ使用してみてください。
最後に
色々書きましたが、結構簡単にパッケージ公開でき、npmよりもスマートで手軽な感じですが、より厳格な印象でした。
これからもちょこちょこパッケージ作成をして行きたいと思います。
次回は、「PUB POINTS」を満点する手順も記載できればと思っております。
ではではぁ。
またまた。