>웹 프론트엔드 >JS 튜토리얼 >JavaScript 프로젝트 환경 관리를 위한 mise 대 asdf

JavaScript 프로젝트 환경 관리를 위한 mise 대 asdf

DDD
DDD원래의
2025-01-04 07:35:36292검색

작가: 로사리오 데 키아라✏️

mise와 asdf는 개발자가 여러 버전의 프로그래밍 언어와 환경을 관리하는 데 도움을 주기 위해 설계된 도구입니다. 두 도구 모두 다양한 프로그래밍 언어 및 프레임워크로 작업할 때 흔히 발생하는 문제인 도구 버전 간 관리 및 전환을 더 쉽게 만들어 다중 언어 개발을 단순화하는 것을 목표로 합니다.

asdf란 무엇인가요?

asdf는 'shimming'이라는 기술을 사용하여 Python, Node.js, Ruby와 같은 도구의 다양한 버전 간에 전환하는 인기 있는 버전 관리자입니다. 특정 버전에 대한 임시 경로를 생성하고 올바른 버전의 도구가 다른 프로젝트에서 사용되도록 환경을 수정합니다. 그러나 이 방법은 심의 작동 방식으로 인해 성능 오버헤드를 초래할 수 있습니다.

미스란 무엇인가?

테이블을 준비하는 방법인 프랑스어 미장플라스(mise-en-place)의 줄임말인 미제(mise)는 심(shim)에 대한 의존도를 없애 asdf의 발전을 추구합니다.

Rust로 작성된 mise는 PATH 환경 변수를 직접 수정하여 실행 시간을 단축합니다. asdf 플러그인과 원활하게 작동하도록 설계되었지만 명령의 퍼지 일치 및 동일한 도구의 여러 버전을 동시에 설치하는 기능과 같은 기능을 제공합니다.

asdf 시작하기

asdf를 설치하려면 시작 가이드에 따라 시스템에 따라 필수 구성 요소를 설치하세요. 환경이 준비되면 홈 디렉터리의 공식 저장소를 git clone할 수 있습니다.

 $ git clone https://github.com/asdf-vm/asdf.git ~/.asdf --branch v0.14.1

위 명령은 설치를 완료하는 데 필요한 모든 스크립트와 구성 파일을 .asdf 디렉터리에 복제합니다.

위 설치 가이드의 다음 단계는 설치 스크립트를 실행하는 것입니다. 다시 한번 말씀드리지만, 이 단계는 환경 및 운영 체제의 세부 사항에 따라 달라지므로 가이드에 따라 셸 초기화 스크립트(예: .bashrc, .bash_profile 등)에 적절한 스크립트 호출을 추가하세요. 이 프로세스가 끝나면 일반적으로 셸을 다시 시작한 후 asdf를 다음 명령으로 실행할 수 있습니다.

mise vs. asdf for JavaScript project environment management

이 시점에서 asdf가 실행 중이지만 이를 유용하게 사용하려면 개발하려는 프로젝트(예: Node.js, 파이썬 등).

이를 위해 Node.js용 플러그인을 설치합니다. asdf에서 플러그인은 프레임워크나 라이브러리의 다양한 버전을 저글링할 수 있게 해주는 코드 조각입니다. 이 경우에는 Node.js 플러그인을 설치한 다음 몇 가지 Node.js 버전을 설치하여 asdf가 이를 처리하는 방법을 이해하겠습니다.

다음 코드를 사용하여 Node.js 플러그인을 설치하겠습니다.

 $ git clone https://github.com/asdf-vm/asdf.git ~/.asdf --branch v0.14.1

플러그인 소스 코드가 포함된 git 저장소를 명시적으로 지정해야 한다는 점에 유의하세요. 플러그인이 설치되면 이를 사용하여 다음 명령을 사용하여 특정 버전의 Node.js를 설치할 수 있습니다.

 $ asdf plugin add nodejs https://github.com/asdf-vm/asdf-nodejs.git

이 예에서는 이 글을 쓰는 시점의 최신 버전인 23.1.0을 설치합니다. 다음 명령을 사용하여 특정 버전의 Node.js를 설치합니다.

 $ asdf install nodejs latest

시스템에서 두 가지를 모두 사용할 수 있는지 확인하려면 다음을 사용하세요.

 $ asdf install nodejs 20.0.0

사용할 Node.js 버전을 선택하려면 다음 명령을 사용하세요.

 $ asdf shim-versions node
 nodejs 20.0.0
 nodejs 23.1.0

asdf는 [.tool-versions](https://asdf-vm.com/manage/configuration.html#tool-versions)라는 파일을 다음 형식으로 채워 다양한 버전의 도구를 처리합니다.

 $ asdf global nodejs 20.0.0
 $ node --version
 v20.0.0
 $ asdf global nodejs 23.1.0
 $ node --version
 v23.1.0

위의 Node.js 버전 20.0.0에서 했던 것처럼, .tool-versions 파일은 사용할 특정 버전을 지정하는 명령을 사용하여 asdf에 의해 자동으로 조작됩니다. 매개변수 전역, 셸 및 로컬에 따라 도구 버전을 특정 .tool-versions 파일에 추가하여 사용자 환경에 다양한 영향을 미칩니다. 다음은 Node.js 버전 20.0.0을 설치할 경우 매개변수의 영향에 대한 설명입니다.

  • asdf global nodejs 20.0.0: 이 경우 다르게 지정되지 않는 한 시스템 전체에서 이 특정 버전을 사용하려고 합니다
  • asdf shell nodejs 20.0.0: 이는 현재 쉘 세션에만 이 Node.js 버전을 사용하려는 경우입니다
  • asdf local nodejs 20.0.0: 이 명령 버전은 명령이 실행되는 디렉터리에만 유효한 Node.js 버전을 지정하는 .tool-versions를 생성합니다. 이는 프로젝트의 서로 다른 하위 디렉터리에 동일한 도구의 서로 다른 버전이 있을 수 있음을 의미합니다. 이는 복잡한 프로젝트와 관련된 매우 깔끔한 기능입니다. 다음 이미지에서는 이것이 환경에 어떤 영향을 미치는지 확인할 수 있습니다.
ruby 2.5.3
nodejs 10.15.0

첫 번째 명령으로 asdf에게 홈 디렉터리에서 버전 20.0.0을 사용하도록 지시하고 node --version으로 버전을 확인합니다. 그런 다음 test라는 디렉터리를 만듭니다. 테스트에서는 Node에 대해 다른 버전(버전 23.1.0)을 지정하여 asdf를 실행하고 다시 node --version을 사용하여 버전 23.1.0을 사용하고 있음을 확인합니다. 마지막으로 홈 디렉터리로 돌아가면 로컬에서 Node.js 버전이 여전히 20.0.0인 것을 확인할 수 있습니다.

심이란 무엇입니까?

이제 시스템에서 asdf가 작동하므로 shim이 무엇인지, asdf로 작업할 때 shim이 왜 중요한지 알아보겠습니다.

컴퓨터 과학에서 shim은 여러 버전 간에 명령(예: 라이브러리 메서드 호출)을 투명하게 리디렉션하는 방법입니다. 여기서 핵심은 '투명하게'라는 단어다. asdf의 전체 아이디어는 사용자가 노드, Python 또는 기타 패키지를 작성할 때 실제로 호출되는 것을 투명한 방식으로 변경할 수 있도록 하는 것입니다. 사용자는 node 또는 python을 계속 입력하지만 asdf는 .tool-versions 파일에 작성된 내용에 따라 올바른 버전에 대한 다른 경로(shim)를 설정했습니다.

플러그인은 asdf가 특정 명령의 적절한 버전을 선택할 수 있도록 하는 영리한 쉘 스크립트 세트입니다(예: Node.js 플러그인 확인). bin 디렉토리의 명령은 Node.js 플러그인을 사용하여 새 버전을 설치하고 사용할 특정 버전을 선택할 때 asdf가 실행해야 하는 작업을 구현합니다.

미스 시작하기

mise 설치 과정은 git 저장소를 복제할 필요가 없기 때문에 asdf에 비해 더 쉽습니다.

 $ git clone https://github.com/asdf-vm/asdf.git ~/.asdf --branch v0.14.1

활성화 가이드는 매우 간단합니다. 위의 명령을 실행하고 셸을 다시 시작하면 다음을 실행할 수 있습니다.

 $ asdf plugin add nodejs https://github.com/asdf-vm/asdf-nodejs.git

설치 상태가 표시됩니다. Mise가 설치되면 [mise activate](https://mise.jdx.dev/cli/activate.html) 명령을 사용하여 활성화해야 할 수도 있습니다.

이 시점에서 가장 일반적인 작업, 즉 특정 버전의 프레임워크를 설치하여 시스템에서 전역적으로 사용할 수 있도록 mise 명령을 사용할 수 있습니다.

 $ asdf install nodejs latest

노드 실행 파일이 시스템에 없는 상황부터 시작합니다. mise 명령을 사용하여 특정 노드 버전을 전역적으로 설치하여 사용할 수 있도록 합니다. 현재 설치된 도구의 버전을 확인하려면 다음 명령을 사용할 수 있습니다.

 $ asdf install nodejs 20.0.0

위 명령어를 보면 위 상자에 설치된 Node Tool과 Python 버전을 확인할 수 있습니다.

asdf와 mise 비교

mise 프레임워크는 동일한 asdf 메커니즘을 사용하여 시스템 전체와 특정 디렉터리 내에서 다양한 도구 구성을 처리합니다. asdf에서 .tool-versions 파일의 역할은 구성을 수집하는 mise.toml 파일에 의해 수행됩니다.

mise에는 asdf 플러그인과 유사한 개념이 없으며 이는 asdf에서 특정 버전의 도구(예: node@20.0.0)를 설치하는 것이 2단계 프로세스이기 때문에 좋은 것입니다( 먼저 Node.js 플러그인을 설치한 다음 특정 Node 버전을 설치하세요). mise에서는 필요한 도구의 단일 버전을 간단히 처리하면, mise가 뒤에서 이를 구성하는 모든 무거운 작업을 처리합니다. 다음 두 상자에서 asdf 명령이 mise로 어떻게 변환되는지 확인할 수 있습니다.

 $ asdf shim-versions node
 nodejs 20.0.0
 nodejs 23.1.0

mise에서는 플러그인과 런타임을 설치하고 버전을 설정하는 단일 단계로 이 모든 작업을 수행할 수 있습니다.

 $ git clone https://github.com/asdf-vm/asdf.git ~/.asdf --branch v0.14.1

asdf의 일반적인 장황함은 mise의 설탕 문법으로 우아하게 해결됩니다. 그럼에도 불구하고 mise는 다양한 버전을 처리하는 방식이 다르며, 이는 전체 경험에 더 넓은 영향을 미칩니다. 다음 이미지에서는 asdf가 작동하는 환경에서 node 명령을 실행할 때 어떤 일이 발생하는지 보여줍니다.

mise vs. asdf for JavaScript project environment management

물론 이 프로세스는 명령을 실행하는 데 필요한 시간에 영향을 미칩니다. 반면, mise는 명령을 실행하는 운영 체제의 기본 메커니즘인 PATH 변수라는 또 다른 메커니즘을 활용하여 구성에 따라 올바른 도구를 선택하는 것과 동일한 문제를 해결합니다.

mise를 사용하지 않고 명령(예: node)을 실행하는 것과 성능은 동일합니다. 참고로, mise는 asdf와 관련하여 다르게 작동합니다. mise는 사용자가 디렉터리를 변경할 때 내부 후크를 호출하여 PATH 변수를 업데이트하도록 디렉터리의 모든 변경 사항을 추적합니다. 이 후크는 Rust로 작성되었으며 PATH 변수를 즉시 설정하여 환경을 구성하므로 매우 효율적입니다.

결론

asdf와 mise는 각각 고유한 메커니즘을 갖춘 여러 도구 버전을 효과적으로 관리합니다. mise는 PATH 후크 메커니즘 덕분에 효율성이 뛰어나고 asdf는 더 넓은 도구 호환성을 제공하지만 심 메커니즘의 성능 저하가 있습니다. asdf 플러그인과 mise의 호환성은 도구 간의 격차를 해소합니다.

속도를 우선시하든 선택을 우선시하든 두 도구 모두 개발자가 환경을 쉽게 관리할 수 있도록 지원하여 다양한 패키지와 도구를 위한 풍부한 생태계를 제공합니다.


몇 분 안에 LogRocket의 최신 오류 추적을 설정하세요.

  1. https://logrocket.com/signup/을 방문하여 앱 ID를 받으세요.
  2. NPM 또는 스크립트 태그를 통해 LogRocket을 설치합니다. LogRocket.init()는 서버측이 아닌 클라이언트측에서 호출해야 합니다.

NPM:

 $ asdf plugin add nodejs https://github.com/asdf-vm/asdf-nodejs.git

스크립트 태그:

 $ asdf install nodejs latest

3.(선택 사항) 스택과의 심층 통합을 위해 플러그인을 설치합니다.

  • Redux 미들웨어
  • ngrx 미들웨어
  • Vuex 플러그인

지금 시작하세요.

위 내용은 JavaScript 프로젝트 환경 관리를 위한 mise 대 asdf의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.