概要
dart pub publish --dry-run で確認したところ、ビルド成果物・ログ・IDE ファイル・生成済みドキュメント・flutter create 時のアプリ雛形など、ライブラリ利用者に不要なものが公開パッケージに含まれている。圧縮後のアーカイブサイズは 3 MB。
原因
pub の仕様上、.pubignore が存在するディレクトリでは .gitignore が参照されなくなる。ルートに .pubignore があるため、ルートの .gitignore による除外がすべて無効化されている状態。
現在の .pubignore は example/.dart_tool/、example/build/、IDE ファイル、OS ファイルしか列挙しておらず、.gitignore が担っていた除外が抜け落ちている。実際 build/ は .gitignore:152 に記載があるにもかかわらず公開対象に入っている。
含まれているもの(抜粋)
| パス |
実サイズ |
備考 |
assets/demo_thumb.gif |
3.5 MB |
README のデモ GIF。README は raw.githubusercontent.com の絶対 URL で参照しており、パッケージ内のファイルは使われていない。pubspec.yaml の flutter: にも assets: 宣言はなく、lib/ からの参照もない |
doc/ |
2.1 MB |
生成済み dartdoc の HTML。pub.dev は独自に API ドキュメントを生成するため不要 |
android/ |
816 KB |
flutter create 時のアプリ雛形。pubspec.yaml に flutter: plugin: の宣言がなくプラグインとしては機能していない(android/app/src/main/kotlin/com/example/misskey_auth/MainActivity.kt など、パッケージ名も com.example のまま) |
ios/ |
712 KB |
同上。ios/Runner/ 一式が含まれる |
build/ |
312 KB |
ビルド成果物。.gitignore 済みだが公開されている |
custom_lint.log |
12 KB |
ログファイル。同上 |
pages/ |
8 KB |
GitHub Pages 用コンテンツ。gh-pages ブランチへデプロイされるもので、パッケージには不要 |
misskey_auth.iml |
< 1 KB |
IntelliJ のモジュールファイル |
example/ については、pub.dev の Example タブに使われるため example/lib/ と example/pubspec.yaml は残したい。一方で example/android/、example/ios/ のプラットフォーム雛形は不要。
対応内容(案)
補足
example/.gitignore の 6 行目 Icon[] が不正なパターンで、dry-run 実行時に以下の警告が出る。あわせて直しておきたい。
example/.gitignore had invalid pattern Icon[].
Pattern "Icon[]" had an invalid `[a-b]` style character range
概要
dart pub publish --dry-runで確認したところ、ビルド成果物・ログ・IDE ファイル・生成済みドキュメント・flutter create時のアプリ雛形など、ライブラリ利用者に不要なものが公開パッケージに含まれている。圧縮後のアーカイブサイズは 3 MB。原因
pub の仕様上、
.pubignoreが存在するディレクトリでは.gitignoreが参照されなくなる。ルートに.pubignoreがあるため、ルートの.gitignoreによる除外がすべて無効化されている状態。現在の
.pubignoreはexample/.dart_tool/、example/build/、IDE ファイル、OS ファイルしか列挙しておらず、.gitignoreが担っていた除外が抜け落ちている。実際build/は.gitignore:152に記載があるにもかかわらず公開対象に入っている。含まれているもの(抜粋)
assets/demo_thumb.gifraw.githubusercontent.comの絶対 URL で参照しており、パッケージ内のファイルは使われていない。pubspec.yamlのflutter:にもassets:宣言はなく、lib/からの参照もないdoc/android/flutter create時のアプリ雛形。pubspec.yamlにflutter: plugin:の宣言がなくプラグインとしては機能していない(android/app/src/main/kotlin/com/example/misskey_auth/MainActivity.ktなど、パッケージ名もcom.exampleのまま)ios/ios/Runner/一式が含まれるbuild/.gitignore済みだが公開されているcustom_lint.logpages/gh-pagesブランチへデプロイされるもので、パッケージには不要misskey_auth.imlexample/については、pub.dev の Example タブに使われるためexample/lib/とexample/pubspec.yamlは残したい。一方でexample/android/、example/ios/のプラットフォーム雛形は不要。対応内容(案)
.pubignoreを書き直し、上記を除外するexample/はlib/とpubspec.yamlを残しつつ、プラットフォーム雛形(android/、ios/)を除外android/とios/について、リポジトリ自体から削除するか.pubignoreでの除外に留めるかを判断する(プラグインとして機能していないため、削除しても利用者への影響はないはず)dart pub publish --dry-runでファイル一覧とアーカイブサイズを確認publish-dry-runジョブが通ることを確認補足
example/.gitignoreの 6 行目Icon[]が不正なパターンで、dry-run 実行時に以下の警告が出る。あわせて直しておきたい。