이동 도구: direnv
3274 단어 goproductivity
direnv
은 분명히 Go 도구이며, 문맥상 Go로 작성되었지만 이전 게시물에서 다루었던 것과 같은 개발 도구는 아닙니다(예: versions , ifacecodegen , counterfeiter 또는 10615067 중 하나). 프로그램을 개발할 때 사용을 고려해야 하는 도구(Go뿐만 아니라 실제로 모든 프로그래밍 언어로), 특히 환경 변수를 통해 구성할 수 있는 다른 이진 종속성 또는 기타 종속성을 가진 프로그램을 빌드하는 경우.개조하다 디렌브가 뭔가요?
공식 페이지에 따르면:
direnv is an extension for your shell. It augments existing shells with a new feature that can load and unload environment variables depending on the current directory.
(강조 내)
이 설명의 핵심은 터미널과 상호 작용할 때 현재 위치에 따라 환경 변수를 로드/언로드하는 강력한 기능입니다.
direnv를 사용하는 것이 왜 관련이 있습니까?
다음과 같은 가상 시나리오를 고려하십시오. 일부 코드를 생성하기 위해 도구에 의존하는 무언가를 빌드하고 있습니다. 이를
tool (v1)
이라고 합시다. 잠시 후 새 프로젝트에서 작업을 시작하면 이 새 프로젝트는 동일한 도구를 사용하지만 다른 버전을 사용합니다. tool (v2)
이지만 v1과 비교하면 다른 방식으로 코드를 생성합니다. v1
을 설치하면 두 도구가 호환되지 않는 아티팩트를 생성하기 때문에 v2
과 충돌합니다(반대로 동일하게 적용됨).Go 컨텍스트에서 이러한 종속성을 처리하는 것은 을 사용하여 쉽게 관리되지만 실제 런타임 요구 사항은 어떻습니까? 그게 무슨 말이에요?
tool (v1)
에 의존한다면 PATH
에서 tool (v2)
과 같은 이야기를 설치하고 사용할 수 있어야 합니다.이 갈등을 어떻게 처리할 수 있습니까? 더 중요한 것은 이러한 도구를 샌드박스 처리하는 방법은 무엇입니까?
모듈 이동 디렌브를 소개합니다
이것은
direnv
이 실제로 빛나는 곳입니다. 환경 변수를 구성 옵션으로 사용하는 일이 발생하는 것을 샌드박스할 수 있습니다. 이것의 가장 일반적인 예는 구체적인 PATH
변수를 만드는 것입니다. 폴더 안에 설치된 바이너리가 사용됩니다. 이 구성을 사용하면 direnv
이 우리가 있는 폴더에만 적용할 수 있는 경계를 명확하게 정의할 수 있습니다.공식 에는 설치 및 사용을 위한 특정 단계가 포함되어 있으며 다음과 같이 작동합니다.
.envrc
파일을 생성하고 .envrc
을 구성하십시오. 예를 들어, 위에서 가정한 시나리오를 사용하여
project1
(tool (v1)
사용)에서 작업할 때 상위 디렉토리에서 .envrc
을 다음과 같이 정의할 수 있습니다.PATH_add bin
export GOBIN=$PWD/bin
이것은
direnv
을 나타냅니다.PATH
을 가리키도록 bin/
을 업데이트하고 GOBIN
을 내보냅니다. 아이디어는 우리가
go install
tool (v1)
일 때 bin/
아래에 설치되고 우리가 그것을 실행하려고 할 때 같은 경로에서 사용할 수 있다는 것입니다..envrc
(project2
사용)에 대해 유사한 tool (v2)
을 생성하면 결과가 비슷할 것입니다. 실제로 이것이 의미하는 바는 이제 두 프로젝트가 서로 충돌하지 않고 동일한 도구의 다른 버전을 참조할 수 있다는 것입니다. 강력한 기능입니다.Github 저장소 마지막 생각들
direnv
을 충분히 추천할 수 없습니다. 개발 경험을 향상시켜야 하는 간단하면서도 강력한 도구입니다.시도해보십시오. 실망하지 않을 것입니다.
Reference
이 문제에 관하여(이동 도구: direnv), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/mariocarrion/go-tool-direnv-3i4l텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)