Link
Embed
Share
Beginning
This slide
Copy link URL
Copy link URL
Copy iframe embed code
Copy iframe embed code
Copy javascript embed code
Copy javascript embed code
Share
Tweet
Share
Tweet
Slide 1
Slide 1 text
Pub、使ってますか? 2015-06-06 Dart Meetup Tokyo #1
Slide 2
Slide 2 text
自己紹介 • Suguru Inatomi a.k.a. @laco0416 • 株式会社トップゲート所属 • Dartは趣味 • 仕事ではGolang、TypeScript使ってます • Dartで仕事がしたい
Slide 3
Slide 3 text
Pub、使ってますか?
Slide 4
Slide 4 text
What is Pub? • Dart開発に便利な機能を備えたコマンドラインツール • pubspec.yamlを使った依存パッケージ管理 • localhostに開発サーバーの立ち上げ • Dart webアプリのJSコンパイル • その他いろいろな機能 • Dartをインストールすれば一緒に入ってくる
Slide 5
Slide 5 text
> pub version Pub 1.10.0
Slide 6
Slide 6 text
Pub commands • pub build • pub cache • pub deps • pub downgrade • pub get • pub global • pub publish • pub run • pub serve • pub upgrade • pub uploader
Slide 7
Slide 7 text
Pub build • webディレクトリ以下のDartファイルをJavaScriptにコンパイル • buildディレクトリ以下にHTMLやその他アセットと共に展開 • エントリポイントを持つDartファイルだけがJS化する
Slide 8
Slide 8 text
No content
Slide 9
Slide 9 text
>pub build --mode • pub build --mode=でビルドモードを切り替えられる • ビルドモードはTransformer内で処理の分岐に使われる • dart2jsが使うのはreleaseとdebug • 何も指定しなければrelease
Slide 10
Slide 10 text
release debug
Slide 11
Slide 11 text
σΟϨΫτϦࢦఆͰϏϧυ • pub build でビルドするディレクトリを指定 • 何も指定しなければwebディレクトリが選択される • 逆にweb以外を明示的に指定するとwebはビルドされなくなる • --allフラグで組み込みのディレクトリをすべてビルド pub build benchmark example/foo bar pub build --all == pub build benchmark bin example test web
Slide 12
Slide 12 text
Pub build & Dart2js • pub buildはdart2jsコマンドを叩く • コマンドライン引数はpubspec.yaml内で設定できる https://www.dartlang.org/tools/dart2js/#options
Slide 13
Slide 13 text
Pub get • pubspec.yamlに記述された依存パッケージをダウンロードする • ダウンロードされたパッケージのリンクがpackagesフォルダに入る • 自分のlibディレクトリもpackagesフォルダにリンクされる
Slide 14
Slide 14 text
>pub get
Slide 15
Slide 15 text
dependencies • 基本的に pub.dartlang.org からダウンロードされる • URLを指定することで任意の場所からDLできる • Gitリポジトリの指定もできる • ローカルパスの指定もできる
Slide 16
Slide 16 text
いろいろなdependencies
Slide 17
Slide 17 text
version constraints • any : なんでも。共存可能な最新を選択 • "1.2.3" : 単一バージョン指定 • ">=1.2.0", "<=1.2.0" : 1.2.0以上, 以下 • ">1.2.0", "<1.2.0" : 1.2.0超, 未満 • ">=1.2.0 <1.3.0" : 範囲指定も可能
Slide 18
Slide 18 text
"^1.2.3" • caret syntax • Dart 1.8.3から追加された記法 • semantic versionに準拠して互換性のある範囲を自動指定 • 使用するにはsdkバージョンの明示的指定が必要
Slide 19
Slide 19 text
まだpubspec.yaml 手書きしてるの?
Slide 20
Slide 20 text
den
Slide 21
Slide 21 text
\デン!/
Slide 22
Slide 22 text
https://pub.dartlang.org/packages/den
Slide 23
Slide 23 text
den • pubspec.yamlを記述してくれるツール • > den install hoge • 依存パッケージ管理だけじゃなくversioningも賢くやってくれる • 作者はGoogle Developer Expertのseaneagan氏
Slide 24
Slide 24 text
>den spec • >den specでpubspec.yamlを初期化して作成する • プロンプト形式で初期情報を設定する • git管理されていればgitから情報取得してくれる
Slide 25
Slide 25 text
>den install • >den install hoge でhogeを依存パッケージに含める • hoge#version 形式でバージョン指定できる • デフォルトは "^最新" • gitからは >den install git://github.com/owner/repo.git -sgit • pathからは >den install path/to/foo -spath
Slide 26
Slide 26 text
>den bump • 自身のバージョンを上げる • パッケージ配布するときに超便利 den bump patch : 1.2.3 => 1.2.4 den bump minor : 1.2.3 => 1.3.0 den bump major : 1.2.3 => 2.0.0 den bump build : 1.2.3 => 1.2.3+1 den bump release --pre : 1.2.3 => 1.2.3-dev.1 den bump release : 1.2.3-dev.1 => 1.2.3 den bump breaking : 0.5.3 => 0.6.0 : 1.2.3 => 2.0.0 den bump 2.0.0-preview
Slide 27
Slide 27 text
Pub global
Slide 28
Slide 28 text
Pub global • その名の通りマシン内でグローバルに使えるパッケージを管理する • いわゆる npm -g • Dartのコマンドラインツールのエコシステムが完成
Slide 29
Slide 29 text
activate • 有効化: >pub global activate hoge • hogeパッケージをグローバルから呼び出せるようになる • --source git
[email protected]
• --source path ~/... • 無効化: >pub global deactivate hoge
Slide 30
Slide 30 text
run • >pub global run hoge:foo • hogeパッケージのbin/foo.dartを実行する • 呼び出されるdartファイルはエントリポイントを備えている必要が ある • 毎回 >pub global run hoge:foo って書きたくない • >foo で実行したくない?
Slide 31
Slide 31 text
--executable • グローバルパッケージのアプリケーションを直接PATHに追加する • >pub global activate hoge --executable=foo --overwrite • --executableに指定されたfooは ~/.pub-cache に追加される • PATHに ~/.pub-cache/bin を追加する必要あり。 • ↑のコマンド長いし自分のパッケージはもっと簡単に使ってほしい…
Slide 32
Slide 32 text
executables: • pubspec.yamlにパッケージ内の実行可能スクリプトを宣言する • ユーザーはactivateするだけでいい • <エイリアス>: 呼び出されるファイル名(bin/foo.dart) • 右辺が空なら bin/<エイリアス>.dart が呼び出される
Slide 33
Slide 33 text
自作ツールを配布する
Slide 34
Slide 34 text
1. mkdir my-awesome-tool 2. cd my-awesome-tool 3. den spec 4. コードを書く 5. pub publish
Slide 35
Slide 35 text
ローカルで自作ツールを使う
Slide 36
Slide 36 text
1. コードを書く my-util/bin/my-util.dart 2. pubspec.yamlにexecutables定義 3. >pub global activate --source path myutil 4. >my-util
Slide 37
Slide 37 text
pub globalの注意点 • dart foo.dartとpub global run fooは実行環境が違う • pub global runでの実行時はlocalhost上にUriがある • Platform.script.path 等、実行環境依存の処理はできない
Slide 38
Slide 38 text
Platform.script.path
Slide 39
Slide 39 text
ϩʔΧϧͷ%BSU8FCΞϓϦΛQVCHMPCBMܦ༝Ͱ QVCTFSWF͠Α͏ͱͯ͠εΫϦϓτͷύε͕औΕͳͯ͘٧Μͩ • bin/bar.dartから../webをserveしたかった • >dart bin/bar.dartなら成功する
Slide 40
Slide 40 text
ղܾࡦ • どうやらPlatformクラスを経由するとそういうことになるらしい • 相対パスが正解だった
Slide 41
Slide 41 text
Pub serve
Slide 42
Slide 42 text
Pub serve • 開発用サーバーを一発で立ち上げてくれる便利なやつ • pub serve + DartiumがDart Webアプリ開発の基本 • ローカルファイル変更をリアルタイム検知 • Dart実行できないブラウザからアクセスすると自動でdart2js
Slide 43
Slide 43 text
--port • >pub serve --port=8081 => http://localhost:8081 • 任意のポートでserve可能 • 実は --hostname=127.0.0.1 でホストネームが変えられる • >pub serve --hostname=127.0.0.1 => http://127.0.0.1:8080
Slide 44
Slide 44 text
>pub serve --mode • buildと同じようにビルドモードを切り替えられる • 何も指定しなければrelease • Dartium以外でのデバッグでsourcemapが使えるので debugモードがオススメ
Slide 45
Slide 45 text
σΟϨΫτϦࢦఆͰserve • >pub serve で配置するディレクトリを指定 • 何も指定しなければwebとtestが選択される • フロントエンドテストのサーバー起動もpub serveが行える pub serve benchmark example/foo bar
Slide 46
Slide 46 text
Pub commands • pub build • pub cache • pub deps • pub downgrade • pub get • pub global • pub publish • pub run • pub serve • pub upgrade • pub uploader ύοέʔδΛ͢Δ CJOͷεΫϦϓτΛ ࣮ߦ ґଘؔΛߋ৽͢Δ Ͱ͖Δ͚ͩ৽͘͠ ύοέʔδͷ࡞ऀใΛ ཧ͢Δ QVCHFUͷΩϟογϡΛ ཧ͢Δ ґଘҰཡΛදࣔ͢Δ ґଘؔΛߋ৽͢Δ Ͱ͖Δ͚ͩݹ͘
Slide 47
Slide 47 text
おまけ
Slide 48
Slide 48 text
GET pub.dartlang.org/api/packages • 実はAPIで更新日付順の パッケージ一覧を取得できる • 偶然見つけた • パッケージビューアみたいなものは 作れそう • 残念ながら検索などの他のAPIは まだ見つかってない
Slide 49
Slide 49 text
5IBOLTGPSMJTUFOJOH © laco0416, 2015