문제 정의: “빌드”와 “컴파일”과 “코드 생성” 도구가 섞이면, 명령을 잘못 선택해 실패하거나 산출물이 일관되지 않다.
핵심 주장: build hooks가 있으면 dart build1를 사용해야 하고, 그렇지 않으면 dart compile2로 실행 파일/스냅샷/JS/Wasm을 만든다. 코드 생성/웹 개발 워크플로는 build_runner3와 webdev4로 구성한다.
주요 근거: build hooks가 있으면 dart compile exe/dart compile aot-snapshot이 훅을 실행하지 않아 실패할 수 있다는 주의, dart build cli 출력 구조, dartaotruntime로 AOT 스냅샷 실행 예시, build_runner build/webdev serve/build 흐름이 제시된다.
실무 기준: (1) 훅 여부 확인 → (2) 빌드 도구 선택 → (3) 산출물 타입(exe/aot/JS/Wasm) 선택 → (4) 코드 생성/웹 빌드는 전용 도구로 분리.
처음에는 “실행 파일만 만들면 되지”라고 생각하기 쉽습니다.
하지만 프로젝트에 코드 생성이나 자산 빌드 훅이 들어오면, 단순 컴파일 명령이 실패할 수 있습니다.
또 웹 개발은 build_runner/webdev 같은 별도 도구 흐름이 있습니다.
따라서 먼저 “어떤 프로젝트인지”를 구분하고, 그에 맞는 도구를 선택해야 합니다.
build_runner는 파일 생성/테스트/서빙을 위한 범용 커맨드를 제공하고, webdev는 Dart 웹 개발에서 compile/serve 흐름을 제공한다고 설명됩니다.
또한 webdev를 쓰려면 build_runner와 build_web_compilers에 dev dependency를 추가하라는 안내가 있습니다.
webdev serve는 개발 컴파일러가 Chrome만 지원한다는 제한이 명시되어 있습니다.
또한 Wasm 타깃에서는 webdev가 Wasm용 serve/build를 지원하지 않는다는 제약이 함께 제시됩니다.
즉, 웹 타깃이 JS인지 Wasm인지에 따라 도구 선택이 달라질 수 있습니다.
결론: 자동화는 목적별 도구(build_runner/webdev)로 분리하고, 브라우저/타깃 제약을 기준으로 워크플로를 고정합니다.