【dart run】Dartファイルを実行する方法【Dart/Flutter】

Flutter

こんにちは、教育系エンジニアのひらまつ(@hiramatsuu)です。

ひらまつの簡単な自己紹介

書籍「ゼロからわかる Linuxコマンド200本ノック(技術評論社)」の著者。Udemy受講者7万人。
プログラミング教育をメインに活動するエンジニアとして、動画教材の作成・技術書の執筆・教育アプリの開発などを行なっています(詳しくはこちら)。

本記事では、dart runコマンドについて解説します。

パッケージに用意されているコマンドラインツールを使うときなど、頻繁に使うコマンドですので、しっかり理解しておきましょう。

そもそもdartコマンドとは?

dartコマンド(通称「dart tool」)は、Dart SDKに含まれているコマンドラインインターフェース。1

Dartコードを、生成・整形・分析・テスト・ドキュメント化・コンパイル・実行する用途で使われる。2

本記事で扱う「dart run」以外にも、「dart pub」や「dart test」などの様々なコマンドがある。より詳しくは、こちらを参照。

dart runコマンドとは

dart runコマンドは、Dartプログラムをコマンドラインから実行するためのコマンド

ファイル内・開発中のパッケージ内・依存しているパッケージ内と、実行するDartファイルの場所はさまざま。

dart runコマンドの基本的な使い方

dart runコマンドの基本的な書式は、次のようになる。

$ dart run [options] [<DART_FILE> | <PACKAGE_TARGET>] [args]

[<DART_FILE> | <PACKAGE_TARGET>] とあるように、オプション(options)と引数(args)の間に指定するものによって、多少書き方が変わるので、それぞれをまとめる。

Dartファイルを指定する場合

例えば、相対パスでDartファイルを指定するには、次のようにする。

$ dart run tool/debug.dart

もちろん、絶対パスで指定することも可能。これは通常のコマンドと一緒。3

パッケージ名と同名のファイルを指定する場合

パッケージにおいて、ユーザーに公開する、コマンドラインから実行するファイルは、binディレクトリに配置する。4

パッケージの名前と、実行するファイルが同名の場合は、パッケージ名を指定するだけで良い。例えば、barパッケージのbin/bar.dartを実行するには、次のようにする。

カレントディレクトリが、barに依存するパッケージの最上位ディレクトリである場合

$ dart run bar

カレントディレクトリが、barパッケージの最上位ディレクトリである場合

$ dart run

パッケージ名とは別の名前のファイルを指定する場合

パッケージと別名のファイルを実行する場合は、「パッケージ名:ファイル名」というように記述する。例えば、barパッケージのbin/baz.dartを実行するには、次のようにする。

カレントディレクトリが、barに依存するパッケージの最上位ディレクトリである場合

$ dart run bar:baz

カレントディレクトリが、barパッケージの最上位ディレクトリである場合

$ dart run :baz

任意の場所からコマンドを実行する2つの方法

上で見たように、dart runコマンドを実行する際には、基本的にカレントディレクトリの位置に気を使う必要がある。だが、カレントディレクトリの位置によらず、任意の場所から、Dartファイルを実行できるように、設定することも可能。

具体的には、dart pub global activateを使う

dart pub global activate

例えば、pub.devにある、markdownパッケージを、任意の場所から実行できるようにするには、次のようにする。

$ dart pub global activate markdown

こうすることで、markdownパッケージのbin/markdown.dartを実行するには、次のようにするだけで良くなる。

$ markdown

ちなみに、activateしたパッケージを一覧するには、次のように実行する。

$ dart pub global list

deactivateするには、次のようにする。

$ dart pub global deactivate markdown

うまく機能しない場合:PATHを通す

場合によっては、dart pub global activateがうまくいかないこともある。その場合は、システムキャッシュのディレクトリ内のbinディレクトリに、PATHが通っているかを確認しよう。

パスを通すには、macOSで開発しているなら、次のようにする。

$ PATH="$PATH:/Users/<user>/.pub-cache/bin"

上記のコマンドラインでは、システムキャッシュのディレクトリ内のbinディレクトリに、パスを通している。

システムキャッシュの位置は、プラットフォームによって異なり、次の表のようになる。

プラットフォームキャッシュの位置
macOS もしくは Linux$HOME/.pub-cache/bin
Windows%LOCALAPPDATA%\Pub\Cache\bin
※Windowsはバージョンによって多少異なるので注意!

その他の情報

Flutter開発についての、他の記事はこちらを参照。

Flutter
「Flutter」の記事一覧です。

参考文献

dart run
Command-line tool for running a Dart program.
dart pub global
Use dart pub global to run Dart scripts hosted on the pub.dev site from the command line.

脚注

  1. https://dart.dev/tools/dart-tool ↩︎
  2. https://dart.dev/tools/sdk ↩︎
  3. 通常のコマンドの実行について、より詳しくは、拙著「ゼロからわかる Linuxコマンド200本ノック」などを参照。 ↩︎
  4. より詳しくは、https://hiramatsuu.com/archives/1997 ↩︎
タイトルとURLをコピーしました