반응형

원래 node 버전 관리자로 nvm을 쓰고 있었는데(프로젝트별로 버전 관리할 필요는 없지만 그냥 node 설치가 편해져서 쓴다ㅎㅎ) fnm가 새로 나왔다길래 써봤고 꽤 만족스러워서 세팅법을 정리해 본다. (관리자 권한이 필요 없다!)

참고로 리눅스 환경에선 이전에도 소개한 anyenv를 쓰고 있다.

리포지토리 주소는 다음과 같다.

https://github.com/Schniz/fnm

설치

릴리즈 페이지에 가서 바이너리를 다운받아 PATH 경로에 둬도 되고 편리하게 winget으로 설치해도 된다.

winget install Schniz.fnm

설치하고 나면 이렇게 fnm 명령어를 사용할 수 있게 된다.

그리고 셸 설정을 해야 한다. 윈도우니까 파워셸 기준으로 설명하고 다른 환경은 리포지토리를 참고하자.

notepad $profile

위 명령어로 프로필 파일을 연다. 만약 프로필 파일이 없어서 오류가 난다면 "New-Item -Path $PROFILE -Type File -Force" 이 명령어로 먼저 해당 파일을 생성하고 입력하면 된다.

fnm env --use-on-cd --version-file-strategy=recursive --resolve-engines | Out-String | Invoke-Expression

프로필 파일 끝에 위 줄을 추가하고 저장하면 된다.

사용법

node -v > .node-version

이렇게 .node-version 파일에 버전을 적어놓으면 해당 디렉터리에 진입할 때 노드 버전이 바뀐다.

fnm list-remote

위 명령어를 입력해서 설치할 수 있는 node 버전을 볼 수 있고 아래 명령어로 해당 버전을 설치할 수 있다.

fnm install [버전]

버전에 lts라고 적으면 알아서 최신 LTS 버전으로 설치한다.

fnm use [버전]

이 명령어로 node 버전을 전환할 수 있다. 임시로 바뀌는 것이며 영구적으로 바꾸려면 아래에 소개한 fnm default 명령어나 위에서 얘기한 .node-version 파일을 사용해야 한다.

문제해결

그런데 파워셸, vscode 내 터미널에선 정상적으로 node가 인식되고 전환되지만, 일부 환경(내부적으로 node를 호출하는 vs code 확장)에서는 인식하지 못하고 node가 설치되지 않은 것으로 인식하는 문제가 있었다. 방법을 찾다가 우연히 “%APPDATA%\fnm\aliases”를 들어가 보고 답을 찾았다.

fnm default <버전>

fnm default 명령어로 기본 node 버전을 지정할 수 있다. 그리고 앞에서 말한 경로를 들어가 보면 default라는 이름의 심볼릭 링크가 있는 걸 알 수 있는데 이 링크는 기본 node와 연결되어 있다. 즉, 저 심볼릭 링크를 path에 추가한다면 시스템에서는 기본으로 지정한 node를 사용할 수 있다는 것이다. (노드 버전을 바꿔도 저 경로는 바뀌지 않으니, 추가로 작업할 필요가 없다)

시작 메뉴를 열고 “환경 변수”라고 검색창에 입력하면 “계정의 환경 변수 편집” 항목이 뜬다. 이걸 열고 사용자 변수에서 Path를 찾아 편집을 누른다.

여기에 “%APPDATA%\fnm\aliases\default” 경로를 추가해 준다.

이제 문제가 발생하지 않는다. 짠!

참고로 저 경로에 있는 심볼릭 링크들은 아래 명령어를 통해서 임의로도 만들 수 있다.

fnm alias <버전> <이름>
반응형

+ Recent posts