このサイトは、只今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

Mac VSCodeで、SFML C++開発環境を作る。

C++

2024.09.09

Rust-SDL2 examplesをすべて試す

Rust

2024.09.01

JavaScriptで、DOMを放り投げる処理

JavaScript

2024.07.27

Rustで創る MOS 6502 CPU その2

Rust

2024.07.23

Rustで創る MOS 6502 CPU その1

Rust

2024.07.19

汎用 3D mesh/model viewerを求め。と、簡単に、FBXファイルをglTF(glb)に変換ツールを求め。

C++

2024.06.06

M1 Macで、OpenGL GLUTを使ってコンパイルする

C

2024.04.27

Rust - Actix Web mongo ユーザー登録 JWT認証

Rust

2024.03.24

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

RANKING

Follow

SPONSOR

現在、掲載募集中です。



Links

About Us

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

Entry Profile

Graphical FrontEnd Engineer
- Daisuke Takayama

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

FOLLOW US