Go 작업 공간이란 무엇이며 어떻게 사용합니까?
3888 단어 programmingsoftwaredevelopmentgo
다음은 릴리스 노트에서 작업 공간에 대해 말한 내용입니다.
이 블로그 게시물에서는 Go 작업 영역이 무엇이고 어떻게 사용하는지 살펴보겠습니다.
이동 모드 교체
코드가 의존하는 Go 모듈 중 하나를 변경하고 싶었던 적이 있습니까? 약간의 인터넷 검색 후 아래와 유사한 작업을 수행하는 자신을 발견했을 수 있습니다.
module test1.18
go 1.18
require golang.org/x/sync v0.0.0-20210220032951-036812b2e83c // indirect
replace golang.org/x/sync => ./local/sync
이것이 우리에게 필요한 전부입니다. 테스트하기 위해
golang.org/x/sync
에서 ./local/sync
로 코드를 복사했습니다. 내 파일 트리는 다음과 같습니다.그런 다음 errgroup의 기능
Go
을 약간 수정했습니다.간단한 기본 기능을 작성했습니다.
예상대로 프로그램을 실행하면 다음과 같은 결과가 나타납니다.
2022/03/21 07:58:10 Let's go!
2022/03/21 07:58:10 did a thing
좋습니다. 모든 것이 작동합니다!
go 1.18 이전에는 한 번에 여러 모듈을 변경할 수 있는 거의 유일한 방법이었습니다. 그런 다음 코드를 커밋하기 전에
go.mod
에서 변경 사항을 제거해야 합니다.작업 공간 소개
작업 공간을 사용하면 이 전체 프로세스가 훨씬 쉬워집니다. 이전에 사용한
go.work
지시문과 동일하게 효과적으로 작동하는 replace
파일을 만들 수 있습니다. 동일한 예를 다시 따르지만 이번에는 작업 공간 파일을 사용합니다.내 go.mod 파일은 다음과 같이 되돌려집니다.
module test1.18
go 1.18
require golang.org/x/sync v0.0.0-20210220032951-036812b2e83c // indirect
그런 다음 프로젝트의 루트에
go.work
라는 새 파일을 만들고 다음을 추가했습니다.go 1.18
use ./local/sync
그게 다야! go 도구는 작업 공간 파일을 자동으로 감지하고 사용합니다.
go run ./workspace/main.go
를 실행하면 이전과 동일한 출력이 표시됩니다.2022/03/21 08:03:43 Let's go!
2022/03/21 08:03:43 did a thing
Go 1.18 베타에서는 다음을 실행할 수 있었습니다.
go build -workfile=off ./workspace/main.go
작업 파일을 사용하지 않고 코드를 빌드할 수 있지만 프로덕션 릴리스에서는 작동하지 않았습니다. go 도구here에 대해 버그를 제기했는데 릴리스 전에 제거된 것 같습니다.
이제 올바른 방법은 다음 명령을 실행하는 것입니다.
GOWORK=off go run ./workspace/main.go
이를 통해 다음과 같은 결과를 얻습니다.
2022/03/21 08:27:03 did a thing
이는 이제 go.mod 파일의 원래 모듈로 빌드되고 있음을 보여줍니다.
모범 사례 및 경고
커뮤니티의 초기 게시물은
go.work
파일을 커밋하지 않는 것이 바람직하다고 제안합니다. 이는 로컬 개발에 사용되며 모듈에 대한 변경 사항을 만들고 테스트한 후에 평소와 같이 모듈을 푸시하고 태그를 지정한 다음 go.mod
파일에서 참조해야 합니다. 따라서 파일 공유go.work
는 의미가 없습니다.go.work
에 .gitignore
를 추가하는 것을 고려하십시오.하지만
go.work
파일을 푸시하는 경우 명시적으로 해제하지 않는 한 go build
를 실행하면 기본적으로 go.work
파일을 사용하는 것처럼 보입니다. 이로 인해 의도치 않게 개발 코드가 포함된 프로덕션 빌드가 발생할 수 있습니다. 따라서 항상 안전을 위해 GOWORK=off go build ./...
로 프로덕션 빌드를 실행하는 것이 좋습니다.마무리
이 정보가 도움이 되었기를 바랍니다. 더 많은 정보를 얻으려면 트위터에서 나를 찾을 수 있습니다.
Reference
이 문제에 관하여(Go 작업 공간이란 무엇이며 어떻게 사용합니까?), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/gophers/what-are-go-workspaces-and-how-do-i-use-them-1643텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)