Chapter 1: Live Reloading(실시간 다시로드) 소개
실시간 다시로드란?
실시간 다시로드는 개발 환경이 코드의 변경을 감지하고 응용 프로그램을 자동으로 다시로드할 수 있는 기능입니다. 파일을 저장하면 실시간 다시로드 도구가 변경을 감지하여 응용 프로그램을 다시 빌드하고 다시 시작합니다. 이렇게 함으로써 서버를 수동으로 중지하고 응용 프로그램을 다시 빌드한 다음 변경 후 다시 시작하는 수고를 덜 수 있습니다.
Go 개발에 대한 실시간 다시로드의 장점
실시간 다시로드는 개발 프로세스를 크게 가속화할 수 있습니다. 코드를 컴파일한 후 실행하는 것에 익숙한 Go 개발자들에게는 실시간 다시로드가 개선된 워크플로우를 제공하여 즉각적인 피드백을 얻을 수 있게 됩니다. 이에 따른 이점은 다음과 같습니다:
- 생산성 향상: 수동으로 다시 빌드할 필요가 없기 때문에 개발자들은 매듭 없이 작업할 수 있습니다.
- 시간 절약: 실시간 다시로드를 통해 코드 변경이 실행 중인 응용 프로그램에 반영되는 시간이 단축됩니다.
- 에러 감지: 즉각적인 다시 빌드와 다시 시작으로 인해 개발자들은 에러를 더 빨리 감지하고 수정할 수 있습니다.
- 워크플로우의 일원화: 개발 프로세스에 매끄럽고 효율적으로 통합되어 작업을 더욱 원활하게 합니다.
Chapter 2: Air란?
Air는 Go 애플리케이션에 대한 실시간 다시로드 기능을 제공하기 위해 설계된 명령줄 유틸리티입니다. 소스 코드의 변경을 모니터링하고 자동으로 Go 애플리케이션을 다시 빌드하고 다시 시작합니다. 이를 통해 기능 개발에 더 많은 초점을 맞출 수 있고 반복적인 작업을 줄일 수 있습니다.
기능
Air는 현대적인 Go 개발 환경에 적합한 다양한 기능을 제공합니다:
- 자동 다시 빌드: 파일 변경을 감지하고 다시 빌드를 트리거합니다.
- 사용자 정의 빌드 명령어: 프로젝트에 필요한 빌드 명령어를 사용자 정의할 수 있습니다.
- 디렉터리 제외: 감시에서 제외할 디렉토리를 지정할 수 있습니다.
- 새로운 디렉터리 지원: Air가 시작된 후 추가된 새로운 디렉터리도 감시할 수 있습니다.
- 색상 및 가독성 있는 로그: 출력 로그의 가독성을 색상 코딩으로 높일 수 있습니다.
- CLI 아규먼트: 명령줄 아규먼트를 통해 구성 필드를 빠르게 조정할 수 있습니다.
Air의 전체 기능과 기능에 대한 내용은 개발자가 제공한 컨텍스트를 참조하십시오.
Chapter 3: air
설치하기
3.1 go install
을 통한 설치
Go 도구 체인 버전 1.18 이상을 사용하여 Air를 설치하려면 다음 명령을 실행합니다:
go install github.com/cosmtrek/air@latest
이렇게 하면 air
가 GOPATH/bin
에 설치됩니다.
3.2 install.sh
스크립트 사용하기
다른 방법으로는 제공된 설치 스크립트를 통해 설치하는 것입니다:
curl -sSfL https://raw.githubusercontent.com/cosmtrek/air/master/install.sh | sh -s -- -b $(go env GOPATH)/bin
설치 후 버전을 확인하려면 다음을 실행합니다:
air -v
3.3 특별한 설치 방법 (Docker/Podman 및 사용자 정의 경로)
Docker나 Podman을 사용하는 경우 Air를 포함하는 간소화된 방법이 있습니다:
docker run -it --rm \
-w "/path/to/project" \
-v $(pwd):/path/to/project \
-p port:port \
cosmtrek/air
/path/to/project
를 프로젝트의 경로로, port:port
를 원하는 포트 매핑으로 교체합니다.
또는 특정 경로에 설치할 경우:
curl -sSfL https://goblin.run/github.com/cosmtrek/air | PREFIX=/custom/path sh
Chapter 4: air
를 Go 프로젝트에 맞게 구성하기
4.1 .air.toml
구성 이해하기
.air.toml
은 Air의 구성 파일로, 빌드 프로세스, 디렉터리 감시 및 로그 출력과 관련된 설정을 지정할 수 있습니다. 주요 섹션에 대한 간략한 개요는 다음과 같습니다:
-
root
: Air의 작업 디렉토리를 설정합니다. -
build
: 빌드 관련 설정을 포함하며, 빌드 전/후 실행할 명령어와 주요 빌드 명령어를 포함합니다. -
tmp_dir
: 임시 빌드 파일이 저장되는 디렉토리를 설정합니다. -
log
: 로그 파일 설정을 구성합니다. -
color
: 로그 출력의 각 부분의 색상을 사용자 정의합니다.
4.2 설정 파일 생성 및 수정
기본 .air.toml
설정 파일을 생성하려면 다음 명령을 실행하십시오:
air init
이 명령은 현재 디렉터리에 기본 설정이 포함된 .air.toml
파일을 생성합니다. 이후 프로젝트 요구 사항에 맞게 수정할 수 있습니다. 참조를 위해 컨텍스트에서 제공된 air_example.toml
을 확인할 수 있습니다.
4.3 CLI 인수로 구성 덮어쓰기
빠른 테스트나 작은 변경을 위해 .air.toml
의 설정을 CLI 인수로 덮어쓸 수 있습니다. 예를 들어:
air --build.cmd "go build -o myapp" --build.bin "./myapp"
이 유연성을 통해 구성 파일을 변경하지 않고 Air의 동작을 쉽게 사용자 정의할 수 있습니다.
5장: 개발 환경에서 air
실행하기
6.1 프로젝트에서 air
시작하기
프로젝트에서 air
를 시작하려면 터미널에서 프로젝트의 루트 디렉터리로 이동하여 air
명령을 실행하십시오. .air.toml
구성 파일이 있으면 air
가 자동으로 사용하며 그렇지 않으면 기본 설정을 사용합니다.
cd /경로/당신의_프로젝트
air
팁: air
실행 파일에 권한 문제가 발생할 경우 실행 권한이 충분한지 확인하십시오(chmod +x $(go env GOPATH)/bin/air
).
6.2 air
로 빌드 및 실행 명령 사용자 정의하기
air
가 사용하는 빌드 및 실행 명령을 .air.toml
구성 파일의 [build]
섹션을 수정하여 사용자 정의할 수 있습니다. 예를 들어, 빌드 명령을 변경하고 다른 이진 파일을 지정하려면:
[build]
cmd = "go build -o ./tmp/my-custom-binary ."
bin = "tmp/my-custom-binary"
더 복잡한 빌드 요구 사항의 경우, 구성 파일의 pre_cmd
및 post_cmd
배열을 사용하여 빌드 전후에 명령을 실행할 수 있습니다.
6.3 디렉터리 제외 및 변경 감시
air
를 사용하여 변경 감시 대상에서 제외할 디렉터리를 설정할 수 있으며, 이는 빌드를 트리거할 필요가 없는 에셋이나 의존성을 포함하는 디렉터리에 유용합니다.
이를 구성하려면 .air.toml
의 exclude_dir
필드를 업데이트하십시오:
[build]
exclude_dir = ["assets", "tmp", "vendor", "node_modules"]
include_dir
를 사용하여 추가 디렉터리를 포함하거나 include_ext
로 특정 파일 확장자를 감시할 수도 있습니다.
6장: 고급 사용법
6.1 Docker 컨테이너에서 air
설정하기
Docker 컨테이너 내에서 air
를 사용하면 팀 단위 작업 시 개발 환경을 간소화할 수 있습니다. air
를 Docker 환경에 포함하려면 Dockerfile
을 업데이트하여 air
를 설치하고 .air.toml
을 컨테이너로 복사하십시오:
FROM golang:1.18-alpine AS builder
RUN go install github.com/cosmtrek/air@latest
WORKDIR /app
COPY go.mod .
COPY go.sum .
RUN go mod download
COPY . .
CMD ["air", "-c", ".air.toml"]
6.3 Docker-compose 환경에서 air
사용하기
docker-compose
로 관리되는 서비스에 air
를 통합하려면 docker-compose.yaml
파일에 서비스를 정의하십시오:
version: '3.8'
services:
app:
build: .
ports:
- "808:808"
volumes:
- .:/app
command: ["air", "-c", ".air.toml"]
volumes
지시문이 프로젝트 디렉터리를 컨테이너의 작업 디렉터리에 올바르게 매핑하도록되어 있는지 확인하여 air
가 파일 변경을 감지할 수 있도록 합니다.
7장: 일반 문제 해결 및 FAQ
7.1 command not found: air
수정하기
command not found: air
오류가 발생하면 일반적으로 시스템의 PATH
에 air
실행 파일이 없음을 의미합니다. 이를 해결하려면 Go 이진 파일 경로를 PATH
환경 변수에 추가하십시오:
export PATH=$PATH:$(go env GOPATH)/bin
7.2 WSL 환경에서의 문제점
Windows Subsystem for Linux (WSL) 환경에서는 .air.toml
파일에서 특수 문자를 이스케이프해야 합니다. 예를 들어 파일 경로에서 백슬래시를 이스케이프하려면 \\
를 사용하십시오.
7.3 이진 파일을 실행하지 않고 핫 컴파일링하는 팁
만약 air
가 Go 애플리케이션을 실행하지 않고 컴파일하도록 하려면, .air.toml
의 [build]
섹션의 cmd
를 Unix 기반 시스템에서의 /bin/true
와 같은 아무 동작을 하지 않는 명령으로 설정하십시오:
[build]
cmd = "/bin/true"
이렇게 하면 air
는 여전히 파일 변경을 감지하고 빌드 프로세스를 트리거하지만 결과 이진 파일을 실행하지는 않습니다.