ํ๋ก์ ํธ์์ ์ฌ์ฉํ ๋ฒ์ ์ ์ง์ ํ ์ ์์ต๋๋ค.
nvm ์ฌ์ฉ ๋ณด๊ธฐ
๋๋ package.json ์์ง ์์ ์ฌ์ฉ ๊ฐ๋ฅํ ์ท์ฅ ๋ฒ์ ์ ๊ตฌ๋ฌธ ๋ถ์ํ ์ ์์ต๋๋ค.
๊ฐ๊ณ ์ถ์ ๊ธธ์ ์๋ ๊ฒ ๊ฐ์์. ์ฃผ๋ ์ด์ ๋ ๋
ธ๋ ๋ฐ์ด๋๋ฆฌ๋ฅผ ์ฌ์์ฑ/๋ชจ๋ฐฉํ๋ ค๋ฉด ๋งค์ฐ ์ถ์
ํ ํดํน์ด ํ์ํ๊ธฐ ๋๋ฌธ์
๋๋ค. ์๋ฅผ ๋ค์ด 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 ํธํ ๋ฒ์ ์ด ์์ต๋๊น?
๊ฐ์ฅ ์ ์ฉํ ๋๊ธ
.nvmrc ์ง์์ CI ์์คํ ๊ณผ ํจ๊ป NVM์ ์ฌ์ฉํ ๋ ์๋นํ ์ค์ํ ์ธก๋ฉด์ ๋๋ค. ๋๋ package.json ์ ์์ ๋งํฌํ์ง ์์ต๋๋ค. ํนํ nvm๊ณผ์ ํธํ์ฑ์ด ๊นจ์ง๊ธฐ ๋๋ฌธ์ ๋๋ค. ํ์ง๋ง .nvmrc๋ฅผ ์ง์ํ๋ ํ ๋ฆฌํ์คํธ๊ฐ ๋ฐ์๋ค์ฌ์ง๊น์?