Dart | Working with the DartCommand Line

Introduction

Dart Command Line

To show all commands, just run dart

❯ dart
A command-line utility for Dart development.

Usage: dart <command|dart-file> [arguments]

Global options:
-h, --help                 Print this usage information.
-v, --verbose              Show additional command output.
    --version              Print the Dart SDK version.
    --enable-analytics     Enable analytics.
    --disable-analytics    Disable analytics.

Available commands:
  analyze    Analyze Dart code in a directory.
  compile    Compile Dart to various formats.
  create     Create a new Dart project.
  devtools   Open DevTools (optionally connecting to an existing application).
  doc        Generate API documentation for Dart projects.
  fix        Apply automated fixes to Dart source code.
  format     Idiomatically format Dart source code.
  migrate    Perform null safety migration on a project.
  pub        Work with packages.
  run        Run a Dart program.
  test       Run tests for a project.

Create a Dart project

❯ dart create
Create a new Dart project.

Usage: dart create [arguments] <directory>
-h, --help                       Print this usage information.
-t, --template                   The project template to use.

          [console] (default)    A command-line application.
          [package]              A package containing shared Dart libraries.
          [server-shelf]         A server app using package:shelf.
          [web]                  A web app that uses only core Dart libraries.

    --[no-]pub                   Whether to run 'pub get' after the project has been created.
                                 (defaults to on)
    --force                      Force project generation, even if the target directory already exists.

Create a Server App

Create the Project

❯ dart create app_server -t server-shelf
Creating app_server using template server-shelf...

  .gitignore
  analysis_options.yaml
  CHANGELOG.md
  pubspec.yaml
  README.md
  Dockerfile
  .dockerignore
  test\server_test.dart
  bin\server.dart

Running pub get...
  Resolving dependencies...
  Downloading lints 2.0.0...
  Downloading shelf_router 1.1.3...
  Downloading http_methods 1.1.0...
  Downloading test 1.21.2...
  Downloading test_core 0.4.14...
  Downloading test_api 0.4.10...
  Downloading glob 2.1.0...
  Downloading frontend_server_client 2.1.3...
  Downloading analyzer 4.1.0...
  Downloading _fe_analyzer_shared 40.0.0...
  Downloading coverage 1.3.2...
  Changed 49 dependencies!

Created project app_server in app_server! In order to get started, run the following commands:

  cd app_server
  dart run bin/server.dart

Run the App

❯ cd app_server
❯ dart run bin/server.dart

Create a Web App

Create the Project

❯ dart create app_web -t web
Creating app_web using template web...

  .gitignore
  analysis_options.yaml
  CHANGELOG.md
  pubspec.yaml
  README.md
  web\index.html
  web\main.dart
  web\styles.css

Running pub get...
  Resolving dependencies...
  Downloading build_web_compilers 3.2.3...
  Downloading protobuf 2.1.0...
  Downloading build_modules 4.0.5...
  Downloading build_runner 2.1.11...
  Downloading matcher 0.12.12...
  Downloading build 2.3.0...
  Downloading dart_style 2.2.3...
  Downloading build_resolvers 2.0.9...
  Changed 58 dependencies!

Created project app_web in app_web! In order to get started, run the following commands:

  cd app_web
  dart pub global activate webdev
  webdev serve

Run the App

❯ cd app_web
❯ dart pub global activate webdev
Package webdev is currently active at version 2.7.9.
Resolving dependencies...
The package webdev is already activated at newest available version.
To recompile executables, first run `dart pub global deactivate webdev`.
Installed executable webdev.
Activated webdev 2.7.9.
❯ webdev serve

Serve with different Port as the default port 8080

❯ webdev serve web:10000
[INFO] Building new asset graph completed, took 11.2s
[INFO] Checking for unexpected pre-existing outputs. completed, took 13ms
[INFO] Serving `web` on http://127.0.0.1:10000
[WARNING] No actions completed for 51.9s, waiting on:
  - build_web_compilers:entrypoint on web/main.dart

[INFO] Generating SDK summary completed, took 49.3s
[WARNING] No actions completed for 15.0s, waiting on:
  - build_web_compilers:sdk_js on asset:build_web_compilers/$package$
  - build_web_compilers:entrypoint on web/main.dart

[WARNING] No actions completed for 15.0s, waiting on:
  - build_web_compilers:sdk_js on asset:build_web_compilers/$package$
  - build_web_compilers:entrypoint on web/main.dart

[INFO] Running build completed, took 1m 40s
[INFO] Caching finalized dependency graph completed, took 1.7s
[INFO] Succeeded after 1m 42s with 15 outputs (1363 actions)
[INFO] ---------------------------------------------------------------------

Create a Command-line App

Create the Project

❯ dart create app_console -t console
Creating app_console using template console...

  .gitignore
  analysis_options.yaml
  CHANGELOG.md
  pubspec.yaml
  README.md
  bin\app_console.dart
  lib\app_console.dart
  test\app_console_test.dart

Running pub get...
  Resolving dependencies...
  Changed 46 dependencies!

Created project app_console in app_console! In order to get started, run the following commands:

  cd app_console
  dart run

Run the App

❯ cd app_console
❯ dart run
Building package executable...
Built app_console:app_console.
Hello world: 42!

Build an executable for Windows

❯ dart compile exe .\bin\main.dart
Info: Compiling with sound null safety
Generated: ...\app_console\bin\main.exe
❯ dir bin

    Directory: D:\CLOUD\Programmier-Workshops\Kurse\Dart\Einsteiger\Overview\app_console\bin

Mode                 LastWriteTime         Length Name
----                 -------------         ------ ----
-a---          21.06.2022    10:28            329 main.dart
-a---          21.06.2022    10:33        5025280 main.exe

❯ .\bin\main.exe
Hello world: 42!

Use a different App Name as Executable:

  • Use option -o with dart compile
❯ dart compile exe .\bin\main.dart -o starter.exe
❯ .\bin\starter.exe
  • configure name in pubspec.yaml
executables:
  github_activity: gh_activity