Nvm-windows: .nvmrc ์ง€์›

์— ๋งŒ๋“  2016๋…„ 01์›” 08์ผ  ยท  18์ฝ”๋ฉ˜ํŠธ  ยท  ์ถœ์ฒ˜: coreybutler/nvm-windows

ํ”„๋กœ์ ํŠธ์—์„œ ์‚ฌ์šฉํ•  ๋ฒ„์ „์„ ์ง€์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
nvm ์‚ฌ์šฉ ๋ณด๊ธฐ

๋˜๋Š” package.json ์—”์ง„ ์—์„œ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ์˜ท์žฅ ๋ฒ„์ „์„ ๊ตฌ๋ฌธ ๋ถ„์„ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

enhancement request wontfix

๊ฐ€์žฅ ์œ ์šฉํ•œ ๋Œ“๊ธ€

.nvmrc ์ง€์›์€ CI ์‹œ์Šคํ…œ๊ณผ ํ•จ๊ป˜ NVM์„ ์‚ฌ์šฉํ•  ๋•Œ ์ƒ๋‹นํžˆ ์ค‘์š”ํ•œ ์ธก๋ฉด์ž…๋‹ˆ๋‹ค. ๋‚˜๋Š” package.json ์ œ์•ˆ์„ ๋งํฌํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ํŠนํžˆ nvm๊ณผ์˜ ํ˜ธํ™˜์„ฑ์ด ๊นจ์ง€๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ .nvmrc๋ฅผ ์ง€์›ํ•˜๋Š” ํ’€ ๋ฆฌํ€˜์ŠคํŠธ๊ฐ€ ๋ฐ›์•„๋“ค์—ฌ์งˆ๊นŒ์š”?

๋ชจ๋“  18 ๋Œ“๊ธ€

๊ฐ€๊ณ  ์‹ถ์€ ๊ธธ์€ ์•„๋‹Œ ๊ฒƒ ๊ฐ™์•„์š”. ์ฃผ๋œ ์ด์œ ๋Š” ๋…ธ๋“œ ๋ฐ”์ด๋„ˆ๋ฆฌ๋ฅผ ์žฌ์ƒ์„ฑ/๋ชจ๋ฐฉํ•˜๋ ค๋ฉด ๋งค์šฐ ์ถ”์•…ํ•œ ํ•ดํ‚น์ด ํ•„์š”ํ•˜๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด node index.js ํ˜ธ์ถœํ•œ๋‹ค๋Š” ๊ฒƒ์€ ํ•ดํ‚น๋œ/๊ฐ€์งœ node.exe ๊ฐ€ ๋ฒ„์ „์„ ํ™•์ธํ•˜๊ธฐ ์œ„ํ•ด ๋จผ์ € package.json ํŒŒ์ผ(์กด์žฌํ•˜๋Š” ๊ฒฝ์šฐ)์„ ๊ตฌ๋ฌธ ๋ถ„์„ํ•œ ๋‹ค์Œ ์‹ค์ œ node.exe ๋ฅผ ์‹คํ–‰ํ•ด์•ผ ํ•จ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. ํ•ด๋‹น ๋ฒ„์ „์˜ ๊ฒฝ์šฐ

๋‹ค๋ฅธ ์œ ์‚ฌํ•œ ํ”„๋กœ์ ํŠธ์—์„œ .bat ํŒŒ์ผ์„ ์‚ฌ์šฉํ•˜์—ฌ ์ด๋ฅผ ์ˆ˜ํ–‰ํ•˜๋ ค๊ณ  ํ–ˆ์Šต๋‹ˆ๋‹ค. ์ด ์ ‘๊ทผ ๋ฐฉ์‹์€ ์ทจ์•ฝ ํ•˜๋ฉฐ ์•„ํ‚คํ…์ฒ˜์˜ ๊ธฐ๋ณธ ๋ชฉํ‘œ์— ์–ด๊ธ‹๋‚ฉ๋‹ˆ๋‹ค .

๋‚˜๋Š” ๋˜ํ•œ ์ด๊ฒƒ์— ๋Œ€ํ•œ ์ˆ˜์š”๊ฐ€ ๊ด‘๋ฒ”์œ„ํ•˜๋‹ค๊ณ  ์ƒ๊ฐํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

.nvmrc ์ง€์›์€ CI ์‹œ์Šคํ…œ๊ณผ ํ•จ๊ป˜ NVM์„ ์‚ฌ์šฉํ•  ๋•Œ ์ƒ๋‹นํžˆ ์ค‘์š”ํ•œ ์ธก๋ฉด์ž…๋‹ˆ๋‹ค. ๋‚˜๋Š” package.json ์ œ์•ˆ์„ ๋งํฌํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ํŠนํžˆ nvm๊ณผ์˜ ํ˜ธํ™˜์„ฑ์ด ๊นจ์ง€๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ .nvmrc๋ฅผ ์ง€์›ํ•˜๋Š” ํ’€ ๋ฆฌํ€˜์ŠคํŠธ๊ฐ€ ๋ฐ›์•„๋“ค์—ฌ์งˆ๊นŒ์š”?

@gruber76 - ๋‚˜๋Š” ์•„๋งˆ ์ด๊ฒƒ์— ๋Œ€ํ•œ PR์„ ๋ฐ›์•„๋“ค์ด์ง€ ์•Š์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

.nvmrc , package.json ... ๋‘˜ ๋‹ค ๊ฐ™์€ ๋ถˆ์พŒํ•œ ํ•ดํ‚น์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

@coreybutler ๋‚˜๋Š” ์ด๊ฒƒ์„ ์ง€์›ํ•˜์ง€ ์•Š์œผ๋ ค๋Š” ๋‹น์‹ ์˜ ๊ทผ๊ฑฐ๋ฅผ ์ดํ•ดํ•˜์ง€ ๋ชปํ•ฉ๋‹ˆ๋‹ค. ์ด ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ•˜๋ฉด ๋ฒ„์ „ ๋ฒˆํ˜ธ๋ฅผ ์ง€์ •ํ•˜์ง€ ์•Š๊ณ  nvm์ด ํ˜ธ์ถœ๋  ๋•Œ๋งˆ๋‹ค .nvmrc ํŒŒ์ผ์„ ์กฐ์‚ฌํ•˜๋Š” ๊ฒƒ์œผ๋กœ ๊ฐ„๋‹จํžˆ ๋Œ€์ฒด๋˜์ง€ ์•Š์„๊นŒ์š”? ๋”ฐ๋ผ์„œ ์–ด๋–ค ๋ถˆ์พŒํ•œ ํ•ดํ‚น์— ๋Œ€ํ•ด ์ด์•ผ๊ธฐํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๊นŒ?

๋ถˆ์พŒํ•œ ํ•ดํ‚น: Windows์šฉ ์‹ฌ๋ณผ๋ฆญ ๋งํฌ๋ฅผ ๋‹ค์‹œ ์ž‘์„ฑํ•ฉ๋‹ˆ๋‹ค.

Windows์šฉ NVM์€ symlink ๋Œ€์ƒ์„ ์›ํ•˜๋Š” ๋ฌผ๋ฆฌ์  ๋…ธ๋“œ ์„ค์น˜ ๋””๋ ‰ํ„ฐ๋ฆฌ๋กœ ๋ณ€๊ฒฝํ•˜์—ฌ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ์‹œ์Šคํ…œ ์ „์ฒด์˜ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์ž…๋‹ˆ๋‹ค.

.nvmrc ํŒŒ์ผ์— ๋ฒ„์ „ 0.12.0์„ ์ง€์ •ํ•˜์—ฌ ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์‹คํ–‰ํ•œ ๋‹ค์Œ .nvmrc ์—†์ด ๋‘ ๋ฒˆ์งธ ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์‹คํ–‰ํ•œ๋‹ค๊ณ  ๊ฐ€์ •ํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ์‹ฌ๋ณผ๋ฆญ ๋งํฌ๋Š” v0.12.0(์ฒซ ๋ฒˆ์งธ ์ธ์Šคํ„ด์Šคํ™”์—์„œ)์„ ๊ฐ€๋ฆฌํ‚ต๋‹ˆ๋‹ค. ๋‘ ๋ฒˆ์งธ ์Šคํฌ๋ฆฝํŠธ์— .nvmrc ์—†์ด ๋‹ค๋ฅธ ๊ฒƒ(์˜ˆ: v4.2.6)์ด ํ•„์š”ํ•œ ๊ฒฝ์šฐ ์‹คํŒจํ•ฉ๋‹ˆ๋‹ค. ์ด๋Š” ์ง„์ •ํ•œ ํ”„๋กœ์„ธ์Šค ๊ฒฉ๋ฆฌ๊ฐ€ ์—†๊ธฐ ๋•Œ๋ฌธ์— ์‹ฌ๋ณผ๋ฆญ ๋งํฌ๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ ํ™˜๊ฒฝ์ด ๋ถˆ์•ˆ์ •ํ•ด์ง‘๋‹ˆ๋‹ค.

ํ”„๋กœ์„ธ์Šค๋ณ„๋กœ ๋ฒ„์ „์„ ๋ถ„๋ฆฌํ•˜๋Š” ์œ ์ผํ•œ ๋ฐฉ๋ฒ•์€ nvm.exe ๊ฐ€ ์šด์˜ ์ฒด์ œ๊ฐ€ ์ˆ˜ํ–‰ํ•˜๋„๋ก ํ—ˆ์šฉํ•˜๋Š” ๋Œ€์‹  ์Šคํฌ๋ฆฝํŠธ๊ฐ€ ์š”์ฒญํ•˜๋Š” ๋ฒ„์ „์œผ๋กœ ๋ฆฌ๋””๋ ‰์…˜ํ•˜๋„๋ก ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ €๋Š” ์šด์˜ ์ฒด์ œ๊ฐ€ ์ด๋ฏธ ์šฐ๋ฆฌ๋ฅผ ์œ„ํ•ด ํ•˜๋Š” ๊ฒƒ์„ ๋‹ค์‹œ ๋งŒ๋“ค๊ณ  ์‹ถ์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์‚ฌ๋žŒ๋“ค์ด ์ •๋ง๋กœ ํ”„๋กœ์„ธ์Šค/ํ”„๋กœ์ ํŠธ ์ ‘๊ทผ ๋ฐฉ์‹์„ ์‚ฌ์šฉํ•˜๊ธฐ๋ฅผ ์›ํ•œ๋‹ค๋ฉด ๋” ์ ์ ˆํ•œ ์†”๋ฃจ์…˜์€ ๋Ÿฐํƒ€์ž„ ํ™˜๊ฒฝ์„ ๊ฒฉ๋ฆฌํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ฐœ์ธ์ ์œผ๋กœ Docker๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

์ €์˜ ๋ฌด์ง€๋ฅผ ์šฉ์„œํ•ด ์ฃผ์‹ญ์‹œ์˜ค. ์ €์˜ ์ฃผ์š” ์‚ฌ์šฉ ์‚ฌ๋ก€๋Š” ์—ฌ๋Ÿฌ ํŒ€๊ณผ ํ•จ๊ป˜ bower/grunt/gulp ๋“ฑ์„ ์‚ฌ์šฉํ•˜์—ฌ ๋…ธ๋“œ/์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๊ฐœ๋ฐœํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ œ ๊ฒฝ์šฐ์—๋Š” ์„œ๋กœ 5๋ถ„ ์ด๋‚ด์— ์—ฌ๋Ÿฌ ๋ฒ„์ „์„ ์‹คํ–‰ํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ๊ทนํžˆ ๋“œ๋ญ…๋‹ˆ๋‹ค. ์ด ์‚ฌ์šฉ ์‚ฌ๋ก€์˜ ๊ฒฝ์šฐ .nvmrc ํŒŒ์ผ์€ ํŒ€์ด ์ˆ˜ํ–‰ํ•ด์•ผ ํ•˜๋Š” ๋…ธ๋“œ๋ฅผ ์ง€์ •ํ•˜๋Š” ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค.

๊ท€ํ•˜๊ฐ€ ์„ค๋ช…ํ•˜๋Š” ์ƒํ™ฉ(์Šคํฌ๋ฆฝํŠธ A ๋Œ€ ์Šคํฌ๋ฆฝํŠธ B)์—์„œ .nvmrc๋ฅผ ์ง€์›ํ•˜๋Š” ๊ฒƒ์ด ์Šคํฌ๋ฆฝํŠธ A(๋˜๋Š” ์Šคํฌ๋ฆฝํŠธ A์˜ ์‚ฌ์šฉ์ž)๊ฐ€ ๋ฒ„์ „์„ ์„ค์ •ํ•˜๊ธฐ ์œ„ํ•ด nvm์„ ํ˜ธ์ถœํ•œ ๋‹ค์Œ ์„ค์ •ํ•˜๋Š” ๊ฒƒ์„ ์žŠ๋Š” ๊ฒƒ๋ณด๋‹ค ๋” ๋ฌธ์ œ๊ฐ€ ๋˜๋Š” ๊ฒƒ์„ ๋ณด๋Š” ๋ฐ ๋ฌธ์ œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ์Šคํฌ๋ฆฝํŠธ B๋ฅผ ์‹คํ–‰ํ•˜๊ธฐ ์ „์— ์‹คํ–‰ํ•˜์‹ญ์‹œ์˜ค. ํ•˜์ง€๋งŒ ๋‚ด ์ƒ๊ฐ๋ณด๋‹ค ํ›จ์”ฌ ์–ด๋ ค์šด ์ฝ”์–ด์ธ nvm์— ๋Œ€ํ•œ ๋ช‡ ๊ฐ€์ง€ ์ผ๋ฐ˜์ ์ธ ์‚ฌ์šฉ ์‚ฌ๋ก€๊ฐ€ ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ๋‚ด CI ์„œ๋ฒ„์— ๋” ๋งŽ์€ ๋ถ€ํ•˜๊ฐ€ ์žˆ๋Š” ๊ฒฝ์šฐ์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

ํ•„์š”ํ•œ ๋‹ค๋ฅธ ์‚ฌ๋žŒ์—๊ฒŒ ์ œ๊ณตํ•  ์ˆ˜ ์žˆ๋Š” ํ•ดํ‚ค ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์ด ์žˆ์Šต๋‹ˆ๋‹ค. ์‚ฌ์ „ ์‹คํ–‰ bat ์Šคํฌ๋ฆฝํŠธ์—์„œ ๋‹ค์Œ์„ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค.

set /p nodev=<.nvmrc
nvm install %nodev%
nvm use %nodev%

npm ์Šคํฌ๋ฆฝํŠธ์— ํ•„์š”ํ•œ ๋ฒ„์ „์„ ์„ค์ •ํ•˜๊ธฐ ์œ„ํ•ด nvm ๋ช…๋ น์„ ๋„ฃ์ง€ ์•Š๋Š” ์ด์œ ๋Š” ๋ฌด์—‡์ž…๋‹ˆ๊นŒ?

์Šคํ‹ฐ๋ธŒ ๋ฆฌ
๋‚ด ๋ชจ๋ฐ”์ผ ์žฅ์น˜์—์„œ ๋ณด๋ƒˆ์Šต๋‹ˆ๋‹ค ์ž…๋ ฅ ์˜ค๋ฅ˜๋ฅผ ์–‘ํ•ดํ•ด ์ฃผ์‹ญ์‹œ์˜ค
2016๋…„ 3์›” 3์ผ 16์‹œ 50๋ถ„์— "gruber76" [email protected]์ด ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ผ์Šต๋‹ˆ๋‹ค.

์ €์˜ ๋ฌด์ง€๋ฅผ ์šฉ์„œํ•ด ์ฃผ์‹ญ์‹œ์˜ค. ๋‚ด ์ฃผ์š” ์‚ฌ์šฉ ์‚ฌ๋ก€๋Š” ๊ฐœ๋ฐœ ์ค‘์ž…๋‹ˆ๋‹ค.
์—ฌ๋Ÿฌ ํŒ€๊ณผ ํ•จ๊ป˜ bower/grunt/gulp ๋“ฑ์„ ์‚ฌ์šฉํ•˜๋Š” ๋…ธ๋“œ/์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜. ์„์œ„ํ•œ
๋‚˜, ๋‚ด์—์„œ ์—ฌ๋Ÿฌ ๋ฒ„์ „์„ ์‹คํ–‰ํ•˜๋Š” ๊ฒƒ์€ ๊ทนํžˆ ๋“œ๋ญ…๋‹ˆ๋‹ค.
์„œ๋กœ์˜ 5๋ถ„. ์ด ์‚ฌ์šฉ ์‚ฌ๋ก€์˜ ๊ฒฝ์šฐ .nvmrc ํŒŒ์ผ์€
ํŒ€์€ ๋…ธ๋“œ๊ฐ€ ์ˆ˜ํ–‰ํ•ด์•ผ ํ•  ์ž‘์—…์„ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค.

๊ท€ํ•˜๊ฐ€ ์„ค๋ช…ํ•˜๋Š” ์ƒํ™ฉ์„ ๋ณด๋Š” ๋ฐ ๋ฌธ์ œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค(์Šคํฌ๋ฆฝํŠธ A ๋Œ€
์Šคํฌ๋ฆฝํŠธ B) .nvmrc๋ฅผ ์ง€์›ํ•˜๋Š” ๊ฒƒ์ด
์Šคํฌ๋ฆฝํŠธ A(๋˜๋Š” ์Šคํฌ๋ฆฝํŠธ A์˜ ์‚ฌ์šฉ์ž)๊ฐ€ nvm์„ ํ˜ธ์ถœํ•˜์—ฌ ๋ฒ„์ „์„ ์„ค์ •ํ•œ ๋‹ค์Œ
์Šคํฌ๋ฆฝํŠธ B๋ฅผ ์‹คํ–‰ํ•˜๊ธฐ ์ „์— ์„ค์ •ํ•˜๋Š” ๊ฒƒ์„ ์žŠ์—ˆ์Šต๋‹ˆ๋‹ค.
๋‚ด ๊ฒƒ๋ณด๋‹ค ํ›จ์”ฌ ์–ด๋ ค์šด ์ฝ”์–ด์ธ nvm์˜ ๋ช‡ ๊ฐ€์ง€ ์ผ๋ฐ˜์ ์ธ ์‚ฌ์šฉ ์‚ฌ๋ก€.
์˜ˆ๋ฅผ ๋“ค์–ด ๋‚ด CI ์„œ๋ฒ„์— ๋” ๋งŽ์€ ๋ถ€ํ•˜๊ฐ€ ์žˆ๋Š” ๊ฒฝ์šฐ์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

ํ•„์š”ํ•œ ๋‹ค๋ฅธ ์‚ฌ๋žŒ์—๊ฒŒ ์ œ๊ณตํ•  ์ˆ˜ ์žˆ๋Š” ํ•ดํ‚ค ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์ด ์žˆ์Šต๋‹ˆ๋‹ค. NS
์‚ฌ์ „ ์‹คํ–‰ bat ์Šคํฌ๋ฆฝํŠธ์—์„œ ๋‹ค์Œ์„ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค.

์„ค์ • /p ๋…ธ๋“œ=<.nvmrc
nvm ์„ค์น˜ %nodev%
nvm ์‚ฌ์šฉ %nodev%

โ€”
์ด ์ด๋ฉ”์ผ์— ์ง์ ‘ ๋‹ต์žฅํ•˜๊ฑฐ๋‚˜ GitHub์—์„œ ํ™•์ธํ•˜์„ธ์š”.
https://github.com/coreybutler/nvm-windows/issues/128#issuecomment -191852401
.

.nvmrc ํŒŒ์ผ์„ ์ง€์›ํ•˜๋ฉด ์ •๋ง ๋„์›€์ด ๋ฉ๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” ๋งŽ์€ ํ”„๋กœ์ ํŠธ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ์œผ๋ฉฐ ๋ชจ๋‘ ๋™์ผํ•œ ๋ฒ„์ „์˜ ๋…ธ๋“œ๋ฅผ ์‹คํ–‰ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. .nvmrc ํŒŒ์ผ์€ ์ง€์ •๋œ ํ”„๋กœ์ ํŠธ์— ์˜ฌ๋ฐ”๋ฅธ ๋ฒ„์ „์˜ ๋…ธ๋“œ๊ฐ€ ์‚ฌ์šฉ๋˜๊ณ  ์žˆ๋Š”์ง€ ํ™•์ธํ•˜๊ธฐ ์œ„ํ•ด ๊ฐ ์ €์žฅ์†Œ์˜ ๋ฃจํŠธ์— ์žˆ์Šต๋‹ˆ๋‹ค.

์ฐธ๊ณ ๋กœ nvm install ๋‹ค์Œ์— nvm use ๊ฐ€ ์™€์•ผ ํ•˜๋Š” ๊ฒƒ๋„ ์งœ์ฆ๋‚ฉ๋‹ˆ๋‹ค. ์„ค์น˜ ํ›„ ๋‘ ๋ฒˆ์งธ ๋‹จ๊ณ„๊ฐ€ ํ•„์š”ํ•œ ์ด์œ ๋ฅผ ์•Œ๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค. ์„ค์น˜์™€ ์‚ฌ์šฉ์ด ์–ด๋–ป๊ฒŒ ๋‹ค๋ฅธ์ง€ ์•Œ ์ˆ˜ ์žˆ์ง€๋งŒ ๋ˆ„๊ตฐ๊ฐ€ ๋‹ค์šด๋กœ๋“œํ•˜์—ฌ ์„ค์น˜ํ•˜์ง€๋งŒ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” ์‚ฌ์šฉ ์‚ฌ๋ก€๊ฐ€ ์žˆ๋Š”์ง€ ๊ถ๊ธˆํ•ฉ๋‹ˆ๋‹ค.

์ด์— ๋Œ€ํ•œ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์€ ๊ฐ ํ”„๋กœ์ ํŠธ์˜ ๋ฃจํŠธ์— ์žˆ๋Š” install-node.js ๋ผ๋Š” ํŒŒ์ผ์ด ์žˆ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ํ”„๋กœ์ ํŠธ๋กœ ์ „ํ™˜ํ•  ๋•Œ๋งˆ๋‹ค ๋ช…๋ น์ค„์—์„œ node install-node ๋ฅผ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค. install-node.js ํŒŒ์ผ์˜ ๋‚ด์šฉ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

var childProcess = require('child_process')
var fs = require('fs')

var nodeVersion = fs.readFileSync('.nvmrc', 'utf8').trim()

var command = "nvm install " + nodeVersion + " && nvm use " + nodeVersion
console.log('executing command: ' + command)
childProcess.exec(command, function(error, stdout, stderr) {
  if (stdout) console.log(stdout.toString())
  if (stderr) console.error(stderr.toString())
  if (error) console.error(error)
})

@josh-egan-ps - install ์™€ use ์€ ๋Œ€๋ถ€๋ถ„ ๋Œ€๊ทœ๋ชจ ํ™˜๊ฒฝ ๊ตฌ์„ฑ์„ ์œ„ํ•œ ๊ฒƒ์ด์—ˆ์Šต๋‹ˆ๋‹ค. ๋‚˜๋Š” ์ข…์ข… ๊ทธ๋“ค ์‚ฌ์ด๋ฅผ ๋’ค์ง‘๊ธฐ ์ „์— ์—ฌ๋Ÿฌ ๋ฒ„์ „์˜ ๋…ธ๋“œ๋ฅผ ์„ค์น˜ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ; nvm install -u 5.9.1 ์™€ ๊ฐ™์€ ํ”Œ๋ž˜๊ทธ๋ฅผ ์„ค์น˜ํ•˜์—ฌ ์ž๋™์œผ๋กœ ์‚ฌ์šฉํ•˜๊ฑฐ๋‚˜... ๋˜๋Š” ์ž๋™์œผ๋กœ ๋ฒ„์ „์„ ์‚ฌ์šฉํ•˜๊ณ  ์‚ฌ์šฉํ•˜์ง€ _์•Š๋„๋ก_ ํ”Œ๋ž˜๊ทธ๋ฅผ ๋‘๋Š” ๊ฒƒ์ด ๋งค์šฐ ํ•ฉ๋ฆฌ์ ์ž…๋‹ˆ๋‹ค. ๋‚˜๋Š” ์ด๊ฒƒ์„ ์ถ”๊ฐ€ํ•˜๋Š” ๊ฒƒ์„ ํ™•์‹คํžˆ ๊ณ ๋ คํ•  ๊ฒƒ์ด๋‹ค.

๋ชจ๋‘๋ฅผ ์œ„ํ•ด - ์ •๋ง ํ”„๋กœ์ ํŠธ๋ณ„๋กœ ์ „ํ™˜ํ•ด์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ package.json์˜ npm ์‹œ์ž‘ ์Šคํฌ๋ฆฝํŠธ ์„น์…˜์— nvm use x.x.x && node index.js ๋ฅผ ๋„ฃ๋Š” ๊ฒƒ์„ ๊ณ ๋ คํ•˜์‹ญ์‹œ์˜ค. ์ผ๋ฐ˜์ ์ธ ๋ชจ๋ฒ” ์‚ฌ๋ก€๋Š” ํ•ญ์ƒ npm start ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋…ธ๋“œ ์•ฑ์„ ์‹œ์ž‘ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๋ชจ๋‘๋ฅผ ์œ„ํ•ด - ์ •๋ง๋กœ ํ”„๋กœ์ ํŠธ๋ณ„๋กœ ์ „ํ™˜ํ•ด์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ package.json์˜ npm ์‹œ์ž‘ ์Šคํฌ๋ฆฝํŠธ ์„น์…˜์— nvm use xxx && node index.js๋ฅผ ๋„ฃ๋Š” ๊ฒƒ์„ ๊ณ ๋ คํ•˜์‹ญ์‹œ์˜ค. ์ผ๋ฐ˜์ ์ธ ๋ชจ๋ฒ” ์‚ฌ๋ก€๋Š” ํ•ญ์ƒ npm start๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋…ธ๋“œ ์•ฑ์„ ์‹œ์ž‘ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๋…ธ๋“œ/npm ๋ฒ„์ „์— ์˜์กดํ•˜๋Š” ์„ค์น˜ ์ค‘์— ์‚ฌ์šฉ๋œ npm _build_ ์Šคํฌ๋ฆฝํŠธ์˜ ๊ฒฝ์šฐ ์‹ค์ œ๋กœ ๋„ˆ๋ฌด ๋Šฆ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋˜๋Š” grunt ๋“ฑ๊ณผ ๊ฐ™์€ ๋‹ค๋ฅธ ๋„๊ตฌ๊ฐ€ ๋ช…์‹œ์ ์œผ๋กœ ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค. ์ž˜๋ชป๋œ ๋ฒ„์ „์˜ node/npm์œผ๋กœ ์„ค์น˜ํ•˜๋Š” ๋™์•ˆ ์‹คํŒจํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋˜๋Š” ๋‹ค๋ฅธ ๋ฌธ์ œ๋ฅผ ์ผ์œผํ‚ค๋Š” ์ž˜๋ชป๋œ ๋ฒ„์ „์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. BTW ์ €๋Š” _๋ชจ๋“  ๊ฒƒ_์„ ๋กœ์ปฌ๋กœ ์„ค์น˜ํ•˜๋Š”(์ฆ‰ -g๊ฐ€ ์•„๋‹Œ) ๋‹ค๋ฅธ ๋ชจ๋ฒ” ์‚ฌ๋ก€๋ฅผ ๊ฐ€์ •ํ•˜๊ณ  ์žˆ์œผ๋ฏ€๋กœ ๋ฒ„์ „ ์ข…์†์„ฑ์€ ๊ฒฐ์ฝ” ๋ฌธ์ œ๊ฐ€ ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

๋”ฐ๋ผ์„œ npm install ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ชจ๋“  ๊ฒƒ์„ ์„ค์ •ํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ ๋‹ค์Œ ์‚ฌ์ „ ์„ค์น˜ ๋‹จ๊ณ„๋ฅผ ์ถ”๊ฐ€ํ•˜์—ฌ nvm ์‚ฌ์šฉ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ์ถ”๊ฐ€

    "preinstall": "nvm use x.x.x",

์›๋ž˜ npm ๋ฒ„์ „์ด ์ƒ์œ„ ํ”„๋กœ์„ธ์Šค์—์„œ ์‹คํ–‰๋˜๋”๋ผ๋„ ๊ดœ์ฐฎ์Šต๋‹ˆ๋‹ค. ์„ค์น˜ ๋‹จ๊ณ„๋Š” ์ƒˆ ์…ธ์„ ์‹œ์ž‘ํ•˜๋ฏ€๋กœ ๋ชจ๋“  ์ž‘์—…์ด ์ƒˆ ๋…ธ๋“œ์™€ npm์„ ์„ ํƒํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์„ค์น˜๋ณด๋‹ค ์‚ฌ์ „ ์‹œ์ž‘ ๋‹จ๊ณ„๋ฅผ ์ถ”๊ฐ€ํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.

@SteveALee - ๋„ค, ๋งž์Šต๋‹ˆ๋‹ค. ์ด์ „ ์ œ์•ˆ์€ ์ž‘๋™ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์•ˆ์ •์ ์œผ๋กœ ์ถœ์‹œํ•˜๊ธฐ์—๋Š” ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋„ˆ๋ฌด ๋Šฆ์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

@coreybutler ๊ฒฐ๊ตญ ๋‚˜๋Š” ์ด๊ฒƒ์„ ์œ„ํ•ด ๊ฐ”๋‹ค

"preinstall":"nvm use 4.4.1 || echo nvm not found: check node version && pause",

์•„๋งˆ๋„ nvm use -i x.x.x ์˜ต์…˜์ด ์ข‹์„๊นŒ์š”? ์ฆ‰, ์•„์ง ์„ค์น˜๋˜์–ด ์žˆ์ง€ ์•Š๋‹ค๋ฉด ์„ค์น˜ํ•˜์‹œ๊ฒ ์Šต๋‹ˆ๊นŒ?

๋‚˜๋Š” ์ ์–ด๋„ ์ด๊ฒƒ์˜ ์ผ๋ถ€๋ฅผ ๊ตฌํ˜„ํ•˜๋„๋ก ์ œ์•ˆํ•˜๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค:

๋ฆฌ๋ˆ…์Šค / ๋งฅ์—,์žˆ๋Š” ํด๋”์— .nvmrc ํŒŒ์ผ ์กด์žฌ, ๋‚ด๊ฐ€ ์‹คํ–‰ํ•  ์ˆ˜ nvm use ์˜ ๋‚ด์šฉ๊ณผ ์ผ์น˜ํ•˜๋Š” ๊ตฌ์ฒด์ ์ธ ๋ฒ„์ „, ์„ค์น˜๋œ ๋ฒ„์ „ ์ง€์ •ํ•˜์ง€ ์•Š๊ณ  .nvmrc ๋„์ฐฉ์„ ํ™œ์„ฑํ™”๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ํŒŒ์ผ์— 8 ๋ผ๊ณ  ํ‘œ์‹œ๋˜๋ฉด ์ตœ์‹  ์„ค์น˜๋œ ๋ฒ„์ „์˜ Node 8์ด ์„ค์น˜๋œ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๋‚ด ์‹œ์Šคํ…œ์—์„œ cd ๋ฅผ ์˜ค๋ฒ„๋กœ๋“œํ•˜๋Š” ์Šคํฌ๋ฆฝํŠธ์™€ ๊ฒฐํ•ฉํ•˜์—ฌ ๋””๋ ‰ํ† ๋ฆฌ์— cd ๋ฅผ ์ถ”๊ฐ€ํ•˜๊ณ  ์˜ฌ๋ฐ”๋ฅธ ๋ฒ„์ „์˜ ๋…ธ๋“œ๊ฐ€ ํ™œ์„ฑํ™”๋˜๋„๋ก ํ•ฉ๋‹ˆ๋‹ค. ์ด ์Šคํฌ๋ฆฝํŠธ๋Š” .bashrc .

# Support .nvmrc
load-nvmrc() {
  if [[ -f .nvmrc && -r .nvmrc ]]; then
    nvm use
  elif [[ $(nvm version) != $(nvm version default)  ]]; then
    echo "Reverting to nvm default version"
    nvm use default
  fi
}
# Override `cd` to auto-load correct version of Node on enterting directory.
cd() { builtin cd "$@"; 'load-nvmrc'; }

nvm ๊ฐ€ ์ด๋Ÿฌํ•œ ํŒŒ์ผ์„ ์กด์ค‘ํ•œ๋‹ค๋ฉด Windows์—์„œ๋„ ์‰ฝ๊ฒŒ ์ž‘๋™ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

.nvmrc๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ ๊ตฌํ˜„๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ; ๋กœ๋“œ๋งต ์—๋Š” ํ›„ํฌ ์ง€์› ๊ณ„ํš์ด ์žˆ์Šต๋‹ˆ๋‹ค(https://github.com/coreybutler/nvm-windows/issues/190). pre-use ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์›ํ•˜๋Š” ํŒŒ์ผ(package.json, .nvmrc ๋˜๋Š” ์„ ํƒํ•œ ๋‹ค๋ฅธ ํŒŒ์ผ ํฌํ•จ)์— ๋”ฐ๋ผ ๋ฒ„์ „์„ ์กฐ์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ด ๋ฌธ์ œ๋Š” ๊ฑฐ์˜ ์ฃฝ์€ ๊ฒƒ ๊ฐ™๊ธฐ ๋•Œ๋ฌธ์— .nvmrc ํŒŒ์ผ์— ๋‹จ์ผ ์ˆซ์ž ๋…ธ๋“œ ๋ฒ„์ „์ด ํฌํ•จ๋œ ๊ฒฝ์šฐ "nvm use" ๋ฐ "nvm install" ๊ธฐ๋Šฅ์„ ๋ชจ๋ฐฉํ•ด์•ผ ํ•˜๋Š” ํ•ด๊ฒฐ ๋ฐฉ๋ฒ• Powershell ์Šคํฌ๋ฆฝํŠธ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

nvm install (Get-Content .nvmrc) ๋Š” ์ž˜ ์ž‘๋™ํ•˜์ง€๋งŒ nvm use (Get-Content .nvmrc) ๋Š” ์ž‘๋™ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค(ํ•œ ์ž๋ฆฌ ๋ฒ„์ „์ด ์„ค์น˜์— ์ „๋‹ฌ๋˜๋ฉด ํ•ด๋‹น ๋…ธ๋“œ ๋ฒ„์ „์˜ ์ตœ์‹  ๋ฒ„์ „์„ ์„ค์น˜ํ•˜์ง€๋งŒ nvm use ๋Š” ํ•œ ์ž๋ฆฌ ์ˆซ์ž๋Š” ๊ฐ€์žฅ ์ตœ๊ทผ์„ ๊ฐ€์ ธ์˜ค๋Š” ๋Œ€์‹  '.0.0'์„ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.

@coreybutler install ์™€ ๋™์ผํ•œ ์ฝ”๋“œ๋ฅผ ์‚ฌ์šฉํ•˜๋„๋ก nvm.go์—์„œ "use" ๋ช…๋ น์„ ์—…๋ฐ์ดํŠธํ•˜๋ฉด ์ด ์ˆ˜์ •์ด ํ•„์š”ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค(์ฆ‰):
if len(version) == 1 { version = findLatestSubVersion(version) } else { version = cleanVersion(version) }

๋‹ค์Œ ์Šคํฌ๋ฆฝํŠธ๋Š” "nvm list available"์„ ์‚ฌ์šฉํ•˜๊ณ  .nvmrc ํŒŒ์ผ์˜ ๋ฒ„์ „๊ณผ ์ผ์น˜ํ•˜๋Š” ๊ฐ€์žฅ ๋†’์€ LTS ๋ฒ„์ „์— ๋Œ€ํ•œ ๋ชฉ๋ก์„ ํ•„ํ„ฐ๋งํ•œ ๋‹ค์Œ 'nvm ์‚ฌ์šฉ'ํ•ฉ๋‹ˆ๋‹ค. ์„ค์น˜๋˜์–ด ์žˆ์ง€ ์•Š์œผ๋ฉด 'nvm install'์ด๊ณ  'nvm use'์ž…๋‹ˆ๋‹ค.
((nvm use (nvm list available | Where-Object -FilterScript { $_ -like ('* ' + (Get-Content .nvmrc)) + '.*'})[0].split('|')[2].trim()) -like '*not installed*') -and (nvm install (nvm list available | Where-Object -FilterScript { $_ -like ('* ' + (Get-Content .nvmrc) + '.*') })[0].split('|')[2]) -and (nvm use (nvm list available | Where-Object -FilterScript { $_ -like ('* ' + (Get-Content .nvmrc) + '.*') })[0].split('|')[2].trim())

.nvmrc ํŒŒ์ผ์—์„œ ์ฝ๊ธฐ ์œ„ํ•ด nvm ์‚ฌ์šฉ ์ง€์›์„ ์š”์ฒญํ•˜๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค. ๊ทธ๊ฒƒ์€ Mac๊ณผ Windows ๊ฐ„์˜ ๋…ธ๋“œ ๊ฐœ๋ฐœ ๊ฒฝํ—˜์„ ๋งค๋„๋Ÿฝ๊ฒŒ ๋งŒ๋“ค ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์ˆ˜์ •๋˜์—ˆ๊ธฐ ๋•Œ๋ฌธ์— ๋‹ซํ˜”์Šต๋‹ˆ๊นŒ ์•„๋‹ˆ๋ฉด ๋ณ€๊ฒฝ๋˜์ง€ ์•Š์„ ์˜ˆ์ •์ž…๋‹ˆ๊นŒ?

*nix ๋ฒ„์ „๊ณผ ๋™์ผํ•œ API๋ฅผ ์‚ฌ์šฉํ•˜๋Š” nvm ์˜ ๋‹ค๋ฅธ Windows ํ˜ธํ™˜ ๋ฒ„์ „์ด ์žˆ์Šต๋‹ˆ๊นŒ?

์ด ํŽ˜์ด์ง€๊ฐ€ ๋„์›€์ด ๋˜์—ˆ๋‚˜์š”?
0 / 5 - 0 ๋“ฑ๊ธ‰