Dart 튜토리얼 29편: Dart SDK & 기본 CLI(dart tool·create·run·test)

요약#

핵심 요지#

  • 문제 정의: Dart CLI 명령이 많아 보이지만, 핵심 흐름을 모르면 프로젝트 생성/실행/테스트 위치에서 자주 헤맨다.
  • 핵심 주장: dart 도구는 SDK의 통합 CLI이며, 입문은 “프로젝트 생성(dart create) → 실행(dart run) → 테스트(dart test)” 흐름으로 잡는 것이 가장 단순하다.
  • 주요 근거: dart create -t ... 템플릿 표, dart run의 실행 대상 규칙(파일/현재 패키지/의존 패키지), dart test의 경로/--name 필터 예시가 제시된다.
  • 실무 기준: “프로젝트 루트에서 실행”을 기본 습관으로 두고, 실행 대상은 dart run의 규칙(현재 패키지/의존 패키지/경로)을 정확히 구분한다.

문서가 설명하는 범위#

  • dart CLI의 역할과 자주 쓰는 서브커맨드 개요
  • dart create 템플릿과 생성 과정(의존성 받기 포함)
  • dart run의 실행 대상과 인자 전달 규칙
  • dart test로 테스트 실행과 필터링(파일/—name 등)

읽는 시간: 13분 | 난이도: 초급


참고 자료#


문제 상황#

처음에는 “실행만 되면 된다”라고 생각하기 쉽습니다.
하지만 실제로는 “어디에서 실행하느냐”, “무엇을 실행하느냐”, “테스트는 어떻게 찾느냐”가 자주 문제를 만듭니다.
이 글은 명령을 많이 외우는 대신, 흐름을 고정해서 반복 가능하게 만드는 것이 목표입니다.


해결 방법#

단계 1: dart는 SDK 통합 CLI이며, 핵심 흐름은 create→run→test다#

Why#

NOTE

도구가 분리되어 있으면 “어떤 도구를 써야 하는지”부터 막힙니다.
그래서 Dart는 dart 하나로 프로젝트 작업을 묶는 흐름이 제시됩니다.

What#

NOTE

dart 도구는 Dart SDK의 커맨드라인 인터페이스이며, create, run, test 같은 작업을 서브커맨드로 제공합니다.
예시로 “create → analyze → test → run” 흐름이 제시됩니다.

How#

TIP

기본 루틴은 다음처럼 잡습니다.

Terminal window
$ dart create -t console my_app
$ cd my_app
$ dart analyze
$ dart test
$ dart run bin/my_app.dart

Watch out#

WARNING

dart에는 pub도 서브커맨드로 포함됩니다.
즉, 의존성 관련 작업은 dart pub ... 형태로 통일하는 것이 기준입니다.

결론: 입문자는 dart 하나로 “create→run→test” 흐름을 먼저 고정하면 됩니다.


단계 2: dart create는 템플릿을 선택해 프로젝트 구조를 만든다#

Why#

NOTE

템플릿은 “파일 위치/기본 설정/실행 엔트리”를 표준화해 줍니다.
따라서 프로젝트 종류(콘솔/웹/패키지)에 맞는 템플릿을 선택하는 것이 중요합니다.

What#

NOTE

dart create는 디렉터리를 만들고 프로젝트 파일을 만든 뒤, 기본적으로 의존성 받기(pub get)를 수행한다고 설명합니다.
또한 -t 옵션으로 템플릿을 고를 수 있다고 설명합니다.

How#

TIP

예시는 다음과 같습니다.

Terminal window
$ dart create my_cli

웹 템플릿을 고르는 예시는 다음과 같습니다.

Terminal window
$ dart create -t web my_web_app

Watch out#

WARNING

기본적으로 의존성을 받는 과정이 포함되므로, 네트워크/프록시 환경에서는 생성 단계부터 실패할 수 있습니다.
즉, 생성이 실패하면 템플릿이 아니라 “의존성 받기 환경”을 먼저 의심해야 합니다.

결론: dart create는 템플릿으로 구조를 만들고 의존성까지 준비하므로, “시작점”으로 쓰기에 적합합니다.


단계 3: dart run은 “무엇을 실행하는지” 규칙을 이해해야 한다#

Why#

NOTE

dart run은 실행 대상이 여러 형태(파일 경로/현재 패키지/의존 패키지 프로그램)로 올 수 있습니다.
규칙을 모르고 쓰면 “왜 이게 실행되지?”에서 막힙니다.

What#

NOTE

dart run은 (1) 경로로 파일을 실행하거나, (2) 현재 패키지의 bin/ 엔트리포인트를 실행하거나, (3) 의존 패키지의 bin/ 프로그램을 실행할 수 있다고 설명합니다.
또한 <package>:<program> 형태도 제시됩니다.

How#

TIP

파일 경로 실행:

Terminal window
$ dart run tool/debug.dart

현재 패키지의 메인 프로그램 실행(패키지 루트에서):

Terminal window
$ dart run

의존 패키지의 프로그램 실행:

Terminal window
$ dart run bar
$ dart run bar:baz

Watch out#

WARNING

bin 디렉터리만 “보이는 프로그램”이라는 설명이 제시됩니다.
즉, 의존 패키지의 다른 디렉터리는 실행 대상으로 취급되지 않으므로, 실행 가능한 엔트리포인트는 bin/에 두는 규칙이 필요합니다.

결론: dart run은 실행 대상 규칙을 이해하면, 파일/패키지/의존 패키지 실행을 깔끔하게 구분할 수 있습니다.


단계 4: dart testtest/ 아래를 실행하고, 필터로 범위를 좁힌다#

Why#

NOTE

테스트가 늘어나면 전체 실행은 시간이 오래 걸립니다.
따라서 원하는 테스트만 실행하는 방식이 필요합니다.

What#

NOTE

dart test는 현재 프로젝트의 test 디렉터리 아래 테스트를 실행한다고 설명합니다.
또한 특정 파일 경로를 지정하거나 --name 같은 필터 옵션을 사용할 수 있다고 설명합니다.

How#

TIP

전체 실행:

Terminal window
$ dart test

특정 파일 실행:

Terminal window
$ dart test test/library_tour/io_test.dart

이름 필터 실행:

Terminal window
$ dart test --name String

Watch out#

WARNING

Flutter 코드는 dart test가 아니라 flutter test를 사용하라는 안내가 있습니다.
즉, 프로젝트 종류에 따라 테스트 명령이 달라질 수 있습니다.

결론: 테스트는 dart test로 실행하고, 범위가 커지면 파일/이름 필터로 좁혀서 빠르게 반복합니다.

공유

이 글이 도움이 되었다면 다른 사람과 공유해주세요!

Dart 튜토리얼 29편: Dart SDK & 기본 CLI(dart tool·create·run·test)
https://moodturnpost.net/posts/dart/dart-sdk-cli-basics/
작성자
Moodturn
게시일
2026-01-04
Moodturn

목차