Dart 튜토리얼 21편: 서버·CLI 입문(server·get started)

요약#

핵심 요지#

  • 문제 정의: 서버·CLI 앱은 “설치부터 실행까지” 절차가 한 번에 잡히지 않으면, 첫 실행에서 막히고 학습이 끊긴다.
  • 핵심 주장: Dart 서버·CLI는 “브라우저에서 빠르게 체험(DartPad) → SDK 설치 → 프로젝트 생성(dart create) → 실행(dart run) → 배포용 컴파일(dart compile)” 순서로 시작하는 것이 가장 단순하다.
  • 주요 근거: dart create -t console1, dart run2, dart compile exe3 흐름이 단계로 제시된다.
  • 실무 기준: 개발 중에는 VM으로 빠르게 반복(dart run), 배포 전에는 AOT로 네이티브 실행 파일 생성(dart compile exe).

문서가 설명하는 범위#

  • 서버·CLI 앱 시작을 위한 툴/가이드 진입점(server)
  • DartPad로 언어 체험, SDK 설치, dart create로 프로젝트 생성
  • dart run으로 실행하고, dart compile로 배포용 실행 파일로 컴파일

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


참고 자료#


문제 상황#

서버·CLI 앱은 “프로젝트 만들기”보다 “실행 환경 만들기”에서 막히는 경우가 많습니다.
특히 처음에는 IDE보다 터미널에서 명령을 실행하는 흐름이 기본이기 때문에, 절차가 머릿속에 정리되지 않으면 바로 멈춥니다.
그래서 이 글은 “딱 한 번 따라 하면 실행까지 되는” 최소 흐름을 고정합니다.


해결 방법#

단계 1: DartPad에서 “언어 느낌”을 먼저 잡기#

Why#

NOTE

설치 전에 “코드가 어떻게 생겼는지”부터 확인하면, 이후 단계에서 무엇을 하고 있는지 더 잘 이해할 수 있습니다.
또한 DartPad는 브라우저에서 바로 실행해볼 수 있어 진입 장벽이 낮습니다.

void main() {
print('Hello, World!');
}

What#

NOTE

DartPad는 브라우저에서 Dart 코드를 실행해볼 수 있는 도구입니다.
다만 VM 라이브러리(dart:io4) 같은 일부 기능은 지원하지 않는다는 제한이 함께 안내됩니다.

How#

TIP

먼저 출력이 되는지 확인한 뒤, 문자열을 바꿔보며 “실행 → 결과” 흐름을 체험합니다.
이 단계에서 목표는 “학습”이 아니라 “실행 감각”을 얻는 것입니다.

Watch out#

WARNING

DartPad는 dart:io 같은 VM 라이브러리나, 모든 패키지를 자유롭게 import하는 환경이 아닙니다.
즉, 서버·CLI 코드는 결국 로컬 SDK 설치 단계로 넘어가야 합니다.

결론: 설치 전에 DartPad로 “실행 감각”을 먼저 잡고, 서버·CLI는 로컬 SDK로 진행합니다.


단계 2: dart create로 “실행 가능한 최소 프로젝트”를 만든다#

Why#

NOTE

프로젝트 구조를 수동으로 만들면 파일 위치(예: bin/, lib/)와 설정(pubspec.yaml)에서 실수가 생기기 쉽습니다.
템플릿으로 시작하면 “바로 실행되는 형태”가 보장됩니다.

What#

NOTE

dart create는 템플릿을 기반으로 프로젝트를 생성합니다.
서버·CLI 입문에서는 console 템플릿으로 시작하는 예시가 제시됩니다.

How#

TIP

다음 명령으로 콘솔 앱을 생성합니다.

Terminal window
$ dart create -t console cli

생성된 프로젝트에는 다음이 포함된다고 설명됩니다.
bin/cli.dart(진입점 main()), lib/cli.dart(기능 코드), pubspec.yaml(메타데이터/의존성).

Watch out#

WARNING

프로젝트 생성 과정에서 dart pub get이 함께 실행될 수 있다는 안내가 있습니다.
즉, 의존성을 바꾸면 다시 dart pub get을 실행하는 습관이 필요합니다.

결론: dart create로 “바로 실행되는 구조”를 먼저 만든 뒤, 그 위에 코드를 얹습니다.


단계 3: dart run으로 실행하고, 코드를 수정해 “반복”을 만든다#

Why#

NOTE

서버·CLI 개발은 “수정 → 실행 → 확인”의 반복이 핵심입니다.
이 반복이 빨라야 학습도 빨라집니다.

What#

NOTE

dart run은 Dart VM으로 프로그램을 실행합니다.
예시는 프로젝트 루트에서 dart run을 실행하는 방식으로 제시됩니다.

How#

TIP

프로젝트로 이동해 실행합니다.

Terminal window
$ cd cli
$ dart run
Hello world: 42!

그리고 lib/cli.dart를 수정한 뒤 다시 실행해 출력이 달라지는지 확인합니다.

int calculate() {
return 6 * 7 ~/ 2;
}
Terminal window
$ dart run
Hello world: 21!

Watch out#

WARNING

서버·CLI 코드는 실행 환경(로컬 OS, 파일 경로 등)에 영향을 받습니다.
따라서 “재현 가능한 실행”을 위해 프로젝트 루트에서 명령을 실행하는 습관이 중요합니다.

결론: 개발 단계에서는 dart run으로 빠르게 실행하고 결과를 확인하는 반복을 만든다.


단계 4: 배포 관점에서는 dart compile exe로 “네이티브 실행 파일”을 만든다#

Why#

NOTE

개발 환경에서는 빠른 반복이 중요하지만, 배포 환경에서는 “즉시 시작”과 “최적화된 실행”이 중요해집니다.
그래서 완료된 앱은 AOT 컴파일로 네이티브 실행 파일로 만든다는 흐름이 제시됩니다.

What#

NOTE

dart compile exe는 Dart 코드를 네이티브 머신 코드 실행 파일로 컴파일합니다.
예시는 bin/cli.dart를 대상으로 컴파일합니다.

How#

TIP

컴파일 명령은 다음과 같습니다.

Terminal window
$ dart compile exe bin/cli.dart

Watch out#

WARNING

컴파일 결과물은 플랫폼/아키텍처의 영향을 받습니다.
따라서 배포 타깃이 바뀌면, 그 타깃에서 다시 빌드하는 흐름이 필요할 수 있습니다.

결론: 배포 전에는 dart compile exe로 실행 파일을 만들어 “배포 단위”를 고정합니다.

Footnotes#

  1. dart create -t console(dart create): 콘솔 앱 템플릿으로 프로젝트를 생성하는 명령이다.

  2. dart run(dart run): Dart VM으로 프로그램을 실행하는 명령이다.

  3. dart compile exe(dart compile exe): Dart 코드를 네이티브 실행 파일로 컴파일하는 명령이다.

  4. dart(dart): 파일/네트워크 등 I/O API를 제공하는 라이브러리다(웹 앱에서는 사용 불가).

공유

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

Dart 튜토리얼 21편: 서버·CLI 입문(server·get started)
https://moodturnpost.net/posts/dart/dart-server-cli-get-started/
작성자
Moodturn
게시일
2026-01-04
Moodturn

목차