こんにちは、教育系エンジニアのひらまつ(@hiramatsuu)です。
書籍「ゼロからわかる Linuxコマンド200本ノック(技術評論社)」の著者。Udemy受講者8万人。
プログラミング教育をメインに活動するエンジニアとして、動画教材の作成・技術書の執筆・学習アプリの開発などを行なっています(詳しくはこちら)。
本記事では、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 |
その他の情報
Flutter開発についての、他の記事はこちらを参照。
参考文献
脚注
- https://dart.dev/tools/dart-tool ↩︎
- https://dart.dev/tools/sdk ↩︎
- 通常のコマンドの実行について、より詳しくは、拙著「ゼロからわかる Linuxコマンド200本ノック」などを参照。 ↩︎
- より詳しくは、https://hiramatsuu.com/archives/1997 ↩︎