[DevTools] nvm๋ณด๋ค 40๋ฐฐ ๋น ๋ฅธ ๋ ธ๋ ๋ฒ์ ๊ด๋ฆฌ ๋๊ตฌ — fnm
Node ๋ฒ์ ๊ด๋ฆฌ ๋๊ตฌ๋ก ์ค๊ณง nvm์ ์ฌ์ฉํ๋ค๊ฐ Rust๋ก ์์ฑ๋ fnm์ด nvm์ ๋นํด 40๋ฐฐ ์ด์ ๋น ๋ฅด๋ค๋ ๊ธ์ ๋ณด๊ณ ๋ฐ๊ฟ์ผ๊ฒ ๋ค๊ณ ๋ง์๋จน์๋ค. volta, fnm ๋ ์ค ๊ณ ๋ฏผํ๋ค๊ฐ ๊ฒฐ๊ตญ fnm์ ์ ํํ๋ค. nvm ์ธํฐํ์ด์ค์ ๊ฑฐ์ ๋์ผํ๊ณ .nvmrc ํ์ผ์ ์ง์ํ๋ ์ ์ด ๋ง์์ ๋ค์๋ค.
nvm์ bash ์คํฌ๋ฆฝํธ๋ก ์์ฑ๋๊ธฐ ๋๋ฌธ์ ๊ธฐ๋ณธ์ ์ผ๋ก Unix ๊ณ์ด์์๋ง ์๋ํ๋ ๋ฐ๋ฉด, fnm์ Windows๋ ์ง์ํ๋ ์ฅ์ ์ด ์๋ค. fnm์ผ๋ก ๋ฐ๊พธ๊ณ ๋์๋ถํฐ ํฐ๋ฏธ๋ ๋ก๋ ์๋๊ฐ ํจ์ฌ ๋นจ๋ผ์ง ๊ฒ ์ฒด๊ฐ๋๋ค. ์ฐธ๊ณ ๋ก fnm์ Fast Node Manager์ ์ฝ์๋ค.
์ค์น ๋ฐฉ๋ฒ
โถ nvm ๊ด๋ จ ํ์ผ ์ญ์ : rm -rf ~/.nvm
โท ~/.bashrc, ~/.bash_profile, ~/.zshrc, ~/.profile ๋ฑ ํ๋กํ์ผ์ ์๋ nvm ๊ด๋ จ ๋ด์ฉ ์ญ์
โธ ์ ์ฌ์์ : source ~/.zshrc
ํจํค์ง ์ค์น
๋ฐฉ๋ฒ 1 - Homebrew๋ก ์ค์น
brew install fnm
๋ฐฉ๋ฒ 2 - ์คํฌ๋ฆฝํธ๋ก ์ค์น
curl -fsSL https://fnm.vercel.app/install | bash
๊ตฌ์ฑ ์ค์
fnm์์ ๊ธฐ๋ณธ์ ์ผ๋ก ๋นํ์ฑํ๋ ๊ธฐ๋ฅ์ fnm env
๋ค์ ๊ธฐ๋ฅ ํ๋๊ทธ๋ฅผ ์ถ๊ฐํด์ ํ์ฑํํ ์ ์๋ค. ์ ์ฒด ํ๋๊ทธ ๋ชฉ๋ก์ fnm ๊ณต์ ๋ฌธ์์์ ์ฐพ์ ์ ์๋ค. ์๋ ์ฝ๋๋ฅผ ~/.zshrc ํ์ผ์ ์ถ๊ฐํ๋ค.
eval "$(fnm env --use-on-cd --version-file-strategy=recursive)"
์๋ ๋ ํ๋๊ทธ ๋ชจ๋ ๊ณต์ ๋ฌธ์์์ ๊ถ์ฅํ๋ ๊ธฐ๋ฅ์ผ๋ก ํ์ฑํํด ๋๊ณ ์ฌ์ฉํ๋ ๊ฑธ ์ถ์ฒํ๋ค.
--use-on-cd
: ํด๋ ์ด๋์ .node-version ๋๋ .nvmrc ํ์ผ์ ๋ช ์ํ ๋ ธ๋ ๋ฒ์ ์ผ๋ก ์๋ ์ ํ--version-file-strategy=recursive
: ์์ ๋๋ ํ ๋ฆฌ์ .node-version ํ์ผ๋ ๊ณ ๋ คfnm use
๋ช ๋ น์ด ๋ค์ ๋ฒ์ ๋ช ์ ์ ์ง ์์ ๊ฒฝ์ฐ, ํ์ฌ ํด๋์์ .node-version ํ์ผ์ ์ฐพ๊ณ , ์๋ค๋ฉด ์์ ํด๋๋ฅผ ์ฌ๊ท์ ์ผ๋ก ํ์ํด์ ๋ฒ์ ์ ๋ณด๋ฅผ ๊ฐ์ ธ์จ๋ค.
์๋ ์์ฑ ์ค์
Oh My Zsh ์ฌ์ฉ์๋ ~/.zshrc ํ์ผ plugins ๋ฐฐ์ด์ fnm
์ ์ถ๊ฐํ๋ฉด ๋ช
๋ น์ด ์๋ ์์ฑ์ ์ฌ์ฉํ ์ ์๋ค.
plugins=(... fnm)
Oh My Zsh๋ฅผ ์ฌ์ฉํ์ง ์๋๋ค๋ฉด ์๋ ์ฝ๋๋ฅผ ~/.zshrc ํ์ผ์ ์ถ๊ฐํด์ ์ค์ ํ ์ ์๋ค. (#171 Issue ์ฐธ๊ณ )
# Homebrew์ zsh ์๋ ์์ฑ ๊ธฐ๋ฅ ๊ฒฝ๋ก๋ฅผ fpath์ ์ถ๊ฐ
fpath+="/opt/homebrew/share/zsh/site-functions"
# compinit ํจ์ ๋ฏธ๋ฆฌ ๋ก๋
autoload -Uz compinit
# zsh ์๋ ์์ฑ ๊ธฐ๋ฅ ์ด๊ธฐํ
compinit
๋ ธ๋ ๋ฒ์ ์๋ ์ ํ
์ค์น๋ฅผ ์๋ฃํ๊ณ .node-version ํน์ .nvmrc ํ์ผ์ ๋ ธ๋ ๋ฒ์ ์ ๋ช ์ํด ๋๋ฉด ํด๋น ํด๋์ ์ ๊ทผํ ๋๋ง๋ค ๋ ธ๋ ๋ฒ์ ์ด ์๋์ผ๋ก ์ ํ๋๋ค. ํด๋น ๋ ธ๋ ๋ฒ์ ์ด ์ค์น๋์ด ์์ง ์๋ค๋ฉด ์ค์น ์ฌ๋ถ๋ฅผ ๋ฌป๋ ํ๋กฌํํธ๊ฐ ํ์๋๋ค.
# .node-version ํ์ผ ์์
20.14.0
echo
๋ช
๋ น์ด๋ฅผ ํ์ฉํ๋ฉด .node-version ํ์ผ์ ๋ ํธํ๊ฒ ์์ฑํ ์ ์๋ค.
# echo ์ถ๋ ฅ ๊ฒฐ๊ณผ๋ฅผ .node-version ํ์ผ์ ๋ฎ์ด์ฐ๊ธฐ
echo '20.14.0' > .node-version
์ฃผ์ ๋ช ๋ น์ด
์ค์นํ ๋
ธ๋๋ ~/.local/share/fnm/node-versions/v<version>
๊ฒฝ๋ก์์ ์ฐพ์ ์ ์๋ค.
# ์ง์ ํ ๋
ธ๋ ๋ฒ์ ์ค์น
fnm install <version>
# LTS ๋ฒ์ ๋
ธ๋ ์ค์น
fnm install --lts
# ์ง์ ํ ๋
ธ๋ ๋ฒ์ ์ญ์
fnm uninstall <version>
# ๋ก์ปฌ์ ์ค์นํ ๋ชจ๋ ๋
ธ๋ ๋ฒ์ ์ถ๋ ฅ
fnm list
fnm ls
# ๋ชจ๋ ์๊ฒฉ ๋
ธ๋ ๋ฒ์ ์ถ๋ ฅ
fnm list-remote
fnm ls-remote
# ์ง์ ํ ๋
ธ๋ ๋ฒ์ ์ฌ์ฉ
fnm use <version>
# ๊ธฐ๋ณธ์ผ๋ก ์ค์ ํ ๋
ธ๋ ๋ฒ์ ์ฌ์ฉ
fnm use default
# ์์คํ
์ ์ค์น๋ ๋
ธ๋ ๋ฒ์ ์ฌ์ฉ
fnm use system
# ํ์ฌ ์ฌ์ฉ ์ค์ธ ๋
ธ๋ ๋ฒ์ ์ถ๋ ฅ
fnm current
# ๊ธฐ๋ณธ ๋
ธ๋ ๋ฒ์ ์ค์
fnm default <version>
# ๋
ธ๋ ๋ฒ์ ๋ณ์นญ ์ค์
fnm alias <version> <name>
# ๋
ธ๋ ๋ฒ์ ๋ณ์นญ ์ ๊ฑฐ
fnm unalias <name>
๊ธ๋ก๋ฒ ํจํค์ง ์ฌ์ค์น
nvm์ --reinstall-packages-from=<old-version>
์ต์
์ ํตํด ๊ธฐ์กด ๋
ธ๋ ๋ฒ์ ์ ์ค์น๋ ๊ธ๋ก๋ฒ NPM ํจํค์ง๋ค์, ์๋ก ์ค์นํ ๋
ธ๋ ๋ฒ์ ์ ์ฌ์ค์นํ ์ ์๋ค. ์์ฝ๊ฒ๋ fnm์ ์ด๋ฌํ ์ต์
์ ์ ๊ณตํ์ง ์๋๋ค. GPT ๋์์ ๋ฐ์ ๊ธ๋ก๋ฒ ํจํค์ง๋ฅผ ๋ง์ด๊ทธ๋ ์ด์
ํ๋ ๊ฐ๋จํ ์คํฌ๋ฆฝํธ๋ฅผ ๋ง๋ค์ด๋ดค๋ค(์๋ Gist ๋งํฌ ์ฐธ๊ณ ).
Update to Node.js LTS and Migrate Global NPM Packages
Update to Node.js LTS and Migrate Global NPM Packages - update-node-lts.sh
gist.github.com
์คํฌ๋ฆฝํธ๋ฅผ ์คํํ๋ฉด ํ์ฌ ๋
ธ๋ ๋ฒ์ ์ ์ค์น๋ ๊ธ๋ก๋ฒ NPM ํจํค์ง๋ค์ ์๋ก ์ค์นํ ๋
ธ๋ ๋ฒ์ ์ ์ฌ์ค์นํ๋ค. -v
ํ๋๊ทธ๋ก ์ค์นํ ๋
ธ๋ ๋ฒ์ ์ ์ง์ ์ง์ ํ ์ ์๊ณ , ์๋ตํ๋ฉด LTS ๋ฒ์ ์ผ๋ก ์ค์นํ๋ค.
# ์คํฌ๋ฆฝํธ ์คํ ๋ช
๋ น์ด
curl -fsSL https://gist.githubusercontent.com/romantech/83ac87cea4e9a6d7a0985f610df329e5/raw/decd27fb4fb3c0aa6563a74e000dc00974f6f1e9/update-node-lts.sh | bash -s -- -v lts
๊ธ ์์ ์ฌํญ์ ๋ ธ์ ํ์ด์ง์ ๊ฐ์ฅ ๋น ๋ฅด๊ฒ ๋ฐ์๋ฉ๋๋ค. ๋งํฌ๋ฅผ ์ฐธ๊ณ ํด ์ฃผ์ธ์
'๐ช Programming' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
๋๊ธ
์ด ๊ธ ๊ณต์ ํ๊ธฐ
-
๊ตฌ๋
ํ๊ธฐ
๊ตฌ๋ ํ๊ธฐ
-
์นด์นด์คํก
์นด์นด์คํก
-
๋ผ์ธ
๋ผ์ธ
-
ํธ์ํฐ
ํธ์ํฐ
-
Facebook
Facebook
-
์นด์นด์ค์คํ ๋ฆฌ
์นด์นด์ค์คํ ๋ฆฌ
-
๋ฐด๋
๋ฐด๋
-
๋ค์ด๋ฒ ๋ธ๋ก๊ทธ
๋ค์ด๋ฒ ๋ธ๋ก๊ทธ
-
Pocket
Pocket
-
Evernote
Evernote
๋ค๋ฅธ ๊ธ
-
[Git] RSS ๊ธ ๋ฐํ ์(ํฐ์คํ ๋ฆฌ ๋ฑ) GitHub ์๋ ์ปค๋ฐ ๋ฐฉ๋ฒ
[Git] RSS ๊ธ ๋ฐํ ์(ํฐ์คํ ๋ฆฌ ๋ฑ) GitHub ์๋ ์ปค๋ฐ ๋ฐฉ๋ฒ
2024.07.03 -
[DevTools] ESLint 9 Flat Config + Prettier ์ค์ (TypeScript, React)
[DevTools] ESLint 9 Flat Config + Prettier ์ค์ (TypeScript, React)
2024.06.30 -
[DevTools] Prettier ์ฃผ์ ํฌ๋งทํ ์ต์ ๊ณผ ์ถ์ฒ ์ค์
[DevTools] Prettier ์ฃผ์ ํฌ๋งทํ ์ต์ ๊ณผ ์ถ์ฒ ์ค์
2024.06.15 -
[Algorithm] ์ด์ง ํ์ ๋ฐ ๋ณํ ์๊ณ ๋ฆฌ์ฆ Binary Search Algorithm
[Algorithm] ์ด์ง ํ์ ๋ฐ ๋ณํ ์๊ณ ๋ฆฌ์ฆ Binary Search Algorithm
2024.06.02