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의 규칙(현재 패키지/의존 패키지/경로)을 정확히 구분한다.
문서가 설명하는 범위
dartCLI의 역할과 자주 쓰는 서브커맨드 개요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 test는 test/ 아래를 실행하고, 필터로 범위를 좁힌다
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
WARNINGFlutter 코드는
dart test가 아니라flutter test를 사용하라는 안내가 있습니다.
즉, 프로젝트 종류에 따라 테스트 명령이 달라질 수 있습니다.
결론: 테스트는 dart test로 실행하고, 범위가 커지면 파일/이름 필터로 좁혀서 빠르게 반복합니다.
공유
이 글이 도움이 되었다면 다른 사람과 공유해주세요!