このサイトは、只今WEB業界で活躍中のデザイナー、プログラマーの方々の情報を集めたweb統合情報サイトです。

Archives Details

Dartパッケージをサクッと作成する

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)登録することによって、以下の様なメリットがあります。

  • 認証バッジが表示される。パッケージを利用するユーザに周知
  • 個人のメールアドレスを非公開

公式サイトに記載されている手順は以下から確認できます。

create-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」を満点する手順も記載できればと思っております。

ではではぁ。

またまた。

Comment

Related Article

AI(ChatGPT)に聞くDart言語

2023.03.12

DartパッケージでPub Pointsを満点にする

2023.03.11

Dartパッケージをサクッと作成する

2023.03.07

DartでさくっとCLIツール作成。

2023.02.28

CATEGORY LIST

LATEST NEWS

Rust - Actix Web JWT 認証認可 APIの作成

Rust

2024.02.25

Rust - Actix Web × JSON 静的ファイルをAPIで返却

Rust

2024.01.19

Rust - Actix Web × MongoDB環境をサクッと起動

Rust

2024.01.18

5分で学ぶ RustでWave Function Collapse (波動関数崩壊アルゴリズム)

Rust

2024.01.15

LLaMAモデル GGMLフォーマット(llama.cpp)をRustフレームワーク Leptosを用いて M1MacMiniでサクッと動かす。

Rust

2024.01.11

2024年 狙っているモバイルノートPC

tool

2024.01.07

MacOS XcodeにSDL2を追加

tool

2023.12.26

php 7.4にアップデート

PHP

2023.12.24

5分で覚える Flutter Flameで作る Wave Function Collapse - 波動関数崩壊アルゴリズム

AI・Bot・algorithm

2023.12.20

Flutter - Flameでゲーム作成 (キャラクターの移動)

Flutter

2023.07.23

Flutterで作る ChatGPT Prompt Manager

Flutter

2023.07.12

【M1 Mac】Python ScrapyがImportErrorで大ハマリ。lxmlなど環境作成し対応した件。

Python

2023.05.24

RANKING

Follow

SPONSOR

現在、掲載募集中です。



Links

About Us

WEBデザイナーの、WEBデザイナーによる、WEBデザイナーの為のサイト。「みんなで書こう!」と仲間を募ってみたが、結局書くのは自分だけとなってしまいました。日々のメモを綴っていきます。

Entry Profile

Graphical FrontEnd Engineer
- Daisuke Takayama

MAD CITY 北九州市で生まれ育つ。20代はバンド活動に明け暮れ、ふと「webデザイナーになりたい。」と思い、デジタルハリウッド福岡校入学。卒業後、数々の賞を受賞、web業界をざわつかせる。
現在、主に、ゲーム制作中心に港区六本木界隈で活動中。

FOLLOW US