unorm_dartというDartのPackageを公開したので公開周りのフローをまとめます。
pub publish --dry-run
を実行するといい感じにいろいろ教えてくれます。たとえばこんな感じ。
Publishing unorm_dart 0.1.0 to https://pub.dartlang.org:
|-- .gitignore
|-- .idea
| |-- codeStyles
| | |-- Project.xml
| | '-- codeStyleConfig.xml
| '-- saveactions_settings.xml
|-- CHANGELOG.md
|-- LICENSE
|-- README.md
|-- analysis_options.yaml
|-- example
| '-- unorm_dart_example.dart
|-- lib
| |-- src
| | |-- composite_iterator.dart
| | |-- decomposite_iterator.dart
| | |-- iterator.dart
| | |-- recursive_decomposite_iterator.dart
| | |-- uchar.dart
| | |-- uchar_iterator.dart
| | |-- unorm_dart_base.dart
| | |-- unormdata.dart
| | '-- utils.dart
| '-- unorm_dart.dart
|-- pubspec.yaml
'-- test
|-- normalization_test.dart
'-- unorm_dart_test.dart
Missing requirements:
* Your pubspec.yaml is missing a "homepage" field.
Sorry, your package is missing a requirement and can't be published yet.
For more information, see: https://www.dartlang.org/tools/pub/cmd/pub-lish.
表示される内容は以下の通り
一番最後の項目を潰していけば公開できるようになります。
今回の場合だと、pubspec.yaml
にhomepageフィールドが足りないようです。homepageフィールドを追加してもう一度 pub publish --dry-run
すると下記のようになります。
Publishing unorm_dart 0.1.0 to https://pub.dartlang.org:
|-- .gitignore
|-- .idea
| |-- codeStyles
| | |-- Project.xml
| | '-- codeStyleConfig.xml
| '-- saveactions_settings.xml
|-- CHANGELOG.md
|-- LICENSE
|-- README.md
|-- analysis_options.yaml
|-- example
| '-- unorm_dart_example.dart
|-- lib
| |-- src
| | |-- composite_iterator.dart
| | |-- decomposite_iterator.dart
| | |-- iterator.dart
| | |-- recursive_decomposite_iterator.dart
| | |-- uchar.dart
| | |-- uchar_iterator.dart
| | |-- unorm_dart_base.dart
| | |-- unormdata.dart
| | '-- utils.dart
| '-- unorm_dart.dart
|-- pubspec.yaml
'-- test
|-- normalization_test.dart
'-- unorm_dart_test.dart
Package has 0 warnings.
これで公開できるはずです。
また、このときPackageに入れたくないファイルが含まれていないか確認しましょう。Packageに含まれないファイルは下記の通りです。
packages
ディレクトリ(Dart2系では使われていないはず)pubspec.lock
).
から始まるファイル).gitignore
に指定されているファイルつまり、基本的にGitで管理しているファイルはすべて公開されるパッケージに含まれます。公開されたくないものはレポジトリに入れないようにしましょう。
今回の場合だと、本来IntelliJの設定フォルダである .idea
はPackageに入れたくないのですが、コードスタイルの設定はレポジトリで共有したいのでやむなく含まれています。
用意ができたら pub publish
で公開します。
Publishing unorm_dart 0.1.0 to https://pub.dartlang.org:
|-- .gitignore
|-- .idea
| |-- codeStyles
| | |-- Project.xml
| | '-- codeStyleConfig.xml
| '-- saveactions_settings.xml
|-- CHANGELOG.md
|-- LICENSE
|-- README.md
|-- analysis_options.yaml
|-- example
| '-- unorm_dart_example.dart
|-- lib
| |-- src
| | |-- composite_iterator.dart
| | |-- decomposite_iterator.dart
| | |-- iterator.dart
| | |-- recursive_decomposite_iterator.dart
| | |-- uchar.dart
| | |-- uchar_iterator.dart
| | |-- unorm_dart_base.dart
| | |-- unormdata.dart
| | '-- utils.dart
| '-- unorm_dart.dart
|-- pubspec.yaml
'-- test
|-- normalization_test.dart
'-- unorm_dart_test.dart
Looks great! Are you ready to upload your package (y/n)?
y
を入力
Pub needs your authorization to upload packages on your behalf.
In a web browser, go to https://accounts.google.com/o/oauth2/auth?access_type=XXXXXXXXXXXXXX
Then click "Allow access".
Waiting for your authorization...
WebブラウザでアクセスするためのURLが表示されるので、ブラウザを開きます。Packageを公開するにはGoogleアカウントが必要で、そのための承認作業です。
無事アカウントの認証ができると、こんな画面が表示されます。ターミナルに戻ると公開処理が完了しているはずです。
Authorization received, processing...
Successfully authorized.
Uploading... (3.4s)
Successfully uploaded package.
30分くらい?待つと https://pub.dartlang.org で検索に表示されるようになります。
Dartのパッケージ公開、本当に楽でした。ほぼCLIで終わってしまうのはちょっと感動です。
今までJavaのライブラリ開発をいくつかしていて、bintrayやmaven centralに公開したこともあるのですが、その時の作業とは比べものにならないほどのお手軽さでした。
今作ろうとしているサービスをFlutter/Dartで実現するためには必要なものがいくつもあるので、ちょこちょこコミュニティにPackageという形で貢献できたらなあ、と思います。