Go에서 Vendor 폴더를 커밋해야 합니까?
게시물Should You Commit the Vendor Folder in Go?은 Qvault에 처음 등장했습니다.
"내 Go 프로젝트의 공급업체 종속성을 소스 제어에 커밋해야 합니까?"라는 오래된 질문에 대한 답입니다. "거의 항상"입니다. 참고로 여기Qvault에서는 모든 백엔드 작업에 Go를 사용하며 항상 공급업체 폴더를 커밋합니다. 종속성을 커밋하는 것이 이상적이라는 내 주장의 이유를 살펴보겠습니다.
공급업체 폴더란 무엇입니까?
Node.js 영역에서 온 경우 Golang의 벤더 폴더는 기본적으로 Node의 폴더와 동일합니다
node_modules
. 모듈이 종속된 모든 코드의 복사본을 저장하는 모듈의 루트에 있는 폴더입니다. 이 코드는 go build
명령이 실행될 때 최종 실행 파일을 컴파일하는 데 사용됩니다. 상상할 수 있듯이 "벤더를 커밋해야 합니까?"토론은 repo 크기의 문제입니다.node_modules
는 큰 크기로 악명이 높습니다.결과적으로 노드 커뮤니티의 일반적인 통념은 공간을 절약하기 위해
node_modules
파일에 .gitignore
를 추가하는 것입니다. 결국, 빠른 npm install
(또는 Go의 경우 go get
)가 모든 것을 올바르게 잡을 것입니까?응. 그래 그럴거야. 대부분의 시간.
재현 가능한 빌드
npm Err! 404 'left-pad' is not in the npm registry
위의 오류 코드plagued the developer world는 개발자가 몇 줄의 간단한 코드를 작성하기에는 너무 게으르거나 너무 조잡했기 때문에 유명합니다. 종속성의 복사본이
leftpad
에 종속된 모든 프로젝트에 커밋되었다면 패키지가 NPM
에서 제거되었을 때 아무 것도 손상되지 않았을 것입니다.module.exports = leftpad;
function leftpad (str, len, ch) {
str = String(str);
var i = -1;
if (!ch && ch !== 0) ch = ' ';
len = len - str.length;
while (++i < len) {
str = ch + str;
}
return str;
}
운 좋게도 지금까지 Go community has been much more rigorous은 종속성을 최소한으로 유지하는 미덕을 유지하는 것에 관한 것입니다. 종속성이 최소로 유지되면 평균
vendor
폴더가 요구하는 막대한 데이터 비용을 발생시키지 않고 전체node_modules
폴더를 쉽게 커밋할 수 있습니다.최종 평결
게시물 개요의 시작 부분에 있는 순서도와 마찬가지로 엄청난 양의 종속성이 없다면 해당 종속성을 커밋하면 됩니다! 프로젝트를 빌드할 때 소스 리포지토리가 삭제되거나 네트워크에 액세스할 수 없는 것에 대해 걱정할 필요가 없습니다. 반면에 외부 코드의 미터법 부하가 있는 경우 지방을 줄이는 작업을 해야 할 수 있습니다.
읽어 주셔서 감사합니다!
테이크computer science courses on our new platform
질문이나 의견이 있으면 Twitter를 팔로우하고 연락하십시오.
Subscribe 더 많은 프로그래밍 기사를 보려면 뉴스레터로
Reference
이 문제에 관하여(Go에서 Vendor 폴더를 커밋해야 합니까?), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/wagslane/should-you-commit-the-vendor-folder-in-go-52km텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)