Air를 사용하여 Golang에서 라이브 리로딩

코드베이스에 대한 라이브 리로딩 변경 사항은 훌륭한 개발자 경험의 핵심 테넌트 중 하나입니다. 코드베이스를 변경할 때 가능한 한 빨리 결과에 대한 피드백을 받을 수 있기를 바랍니다. Live reloading은 코드베이스 변경 사항을 관찰하고 변경 사항이 통합된 애플리케이션을 자동으로 다시 빌드하는 프로세스입니다. 이 작업을 수동으로 수행해야 하는 경우 매우 실망스러울 수 있습니다. 변경 내용을 저장하고, 서버를 중지하고, 다시 빌드한 다음 변경 사항이 있을 때마다 서버를 시작합니다.

NodeJS 기반 프레임워크와 Angular 및 React와 같은 프런트엔드 프레임워크로 작업한 경험이 있는 대부분의(전부는 아니지만) 라이브 리로딩이 내장되어 있습니다. Flutter와 같은 일부 프레임워크는 stateful을 사용하여 이를 조금 더 발전시켰습니다. 자세한 내용은 다루지 않겠습니다.

최근에 Golang을 사용하기로 전환하면서 이 문제를 해결해야 한다는 것을 깨달았습니다. 운 좋게도 이 동작을 가능하게 하는 몇 가지 훌륭한 옵션이 있습니다. 그 중 하나는 Air (github.com/cosmtrek/air) - Golang 앱용 실시간 재로딩 도구입니다.

















마이나 위클리프


@mwycliffe_dev






Angular, React와 같은 프런트엔드 프레임워크로 많은 시간을 보냈고 작업할 때 정말 놓친 한 가지는 코드베이스를 변경할 때 실시간 다시 로드하는 것이었습니다.


오전 07:26 - 2022년 4월 4일









github.com/cosmtrek/air 에어 설치



먼저 air를 설치하겠습니다. air를 설치하는 방법은 여러 가지가 있지만 제가 한 방법은 Golang이 이미 설치되어 있었기 때문에 go install를 사용하는 것이었습니다.

go install github.com/cosmtrek/air@latest


찾을 수 있는 다른 여러 설치 옵션이 있습니다 .

여기 공기 구성



다음으로 Golang 프로젝트에 대해 Air를 구성해야 합니다. 다음 명령을 실행하여 이를 수행할 수 있습니다.

air init


이렇게 하면 Air의 기본 구성을 포함하는 air.toml 파일이 생성됩니다. 다음은 그 예입니다.

root = "."
testdata_dir = "testdata"
tmp_dir = "tmp"

[build]
  bin = "./tmp/main"
  cmd = "go build -o ./tmp/main ."
  delay = 1000
  exclude_dir = ["assets", "tmp", "vendor", "testdata"]
  exclude_file = []
  exclude_regex = ["_test.go"]
  exclude_unchanged = false
  follow_symlink = false
  full_bin = ""
  include_dir = []
  include_ext = ["go", "tpl", "tmpl", "html"]
  kill_delay = "0s"
  log = "build-errors.log"
  send_interrupt = false
  stop_on_error = true

[color]
  app = ""
  build = "yellow"
  main = "magenta"
  runner = "green"
  watcher = "cyan"

[log]
  time = false

[misc]
  clean_on_exit = false

[screen]
  clear_on_rebuild = false


다음으로, 관심을 가질 수 있고 프로젝트를 위해 업데이트할 수 있는 몇 가지 주목할만한 구성을 강조하겠습니다.
buildair.toml에서 ; cmd 속성을 변경할 수 있습니다. golang 애플리케이션의 항목이 server와 같이 다른 디렉토리에 있는 경우 속성을 다음과 같이 변경할 수 있습니다.

cmd = "go build -o ./tmp/main ./server/main.go"


주목해야 할 또 다른 구성 속성 세트는 include_dir , include_ext , exclude_direxclude_file 항목입니다. include_dirinclude_ext는 실시간 재로드 시 변경 사항을 감시할 dir 및 확장자를 Air에 알리고, exclude_direxclude_file는 변경 사항을 수신하지 않는 디렉터리, 확장자 및 파일을 air에 알립니다.

특정 패턴과 일치하는 파일, 즉 기본적으로 테스트 파일과 일치하는 파일을 무시할 수 있는 exclude_regex 속성도 있습니다. 이러한 구성을 통해 앱 구조에 따라 Air를 구성할 수 있습니다.

Air 구성에 대한 자세한 내용은 예제 파일 을 참조하십시오.

여기 앱 실행



마지막으로 남은 부분은 Air를 사용하여 Golang 애플리케이션을 실행하는 것입니다. air 명령을 실행하여 이 작업을 수행할 수 있습니다.

air


그런 다음 프로젝트를 변경하고 Go 애플리케이션을 실시간으로 새로고침하는 것을 시청하세요.

결론



이 기사에서는 코드베이스를 변경할 때 Air를 사용하여 Go 애플리케이션을 실시간으로 다시 로드하는 방법을 배웠습니다. 초기화 방법, 변경할 수 있는 구성 및 나중에 응용 프로그램을 시작하는 방법을 배웠습니다.

계속해서 Air에 대해 자세히 알아보려면 Github 저장소 를 방문하십시오.

좋은 웹페이지 즐겨찾기