๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
์‹œ๋„/Code-States

[D+43] node.js์™€ ๊ด€๋ จ ๋„๊ตฌ

by ๐Ÿ‡๋ฐ•๋ด‰๋ด‰๐Ÿ‡ 2020. 10. 19.

 

D+43

-  node.js์™€ ๊ด€๋ จ ๋„๊ตฌ -

(node.js, NVM, NPM, package.json)

 


 

 

node.js

•Java Script ๋Ÿฐํƒ€์ž„

์ฆ‰, ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๊ฐ€ ๋Œ์•„๊ฐˆ ์ˆ˜ ์žˆ๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ๋‚˜ํƒ€๋‚ธ๋‹ค.

 

 

๋Ÿฐํƒ€์ž„ (runtime)

•ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด๊ฐ€ ๊ตฌ๋™๋˜๋Š” ํ™˜๊ฒฝ(ํ”„๋กœ๊ทธ๋žจ)

 

•์–ด๋–ค ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด๊ฐ€ ๋™์ž‘ํ•  ์ˆ˜ ์žˆ๋Š” ํ”„๋กœ๊ทธ๋žจ

 

node.js์—์„œ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์‹คํ–‰ํ•˜๊ธฐ

๋งŒ์•ฝ์— runnode.js๋ผ๋Š” ํŒŒ์ผ์ด ์žˆ์„ ๋•Œ ์ด๊ฒƒ์„ node.jsํ™˜๊ฒฝ์—์„œ ์‹คํ–‰์‹œํ‚ค๊ณ  ์‹ถ๋‹ค๊ณ  ํ•˜์ž.

// runnode.js
const testFunction = function(word){
	console.log("Hello ", word);
}

testFunction("hi");

 

๊ทธ๋Ÿด ๊ฒฝ์šฐ node <file_name>์„ ํ„ฐ๋ฏธ๋„ ์ฐฝ์— ์ž…๋ ฅํ•˜๊ฒŒ ๋˜๋ฉด "Hello hi"๋ผ๋Š” ๋ฉ”์‹œ์ง€๋ฅผ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.

$ node runnode.js // node <file_name>

 

 

 


NVM (Node Version Manager)

node์—๋Š” ๊ฐ๊ธฐ ๋‹ค์–‘ํ•œ ๋ฒ„์ „์ด ์กด์žฌํ•˜๋Š”๋ฐ ๋งŒ์•ฝ ๋‚ด๊ฐ€ ํ˜„์žฌ ๋ฒ„์ „์—์„œ ์ž‘์„ฑํ•œ ์ฝ”๋“œ๋ฅผ ๋‹ค๋ฅธ ๋ฒ„์ „์—์„œ ์‹คํ–‰ํ•˜๋ ค๊ณ  ํ•˜๋ฉด ์ž˜ ์‹คํ–‰๋˜์—ˆ๋˜ ์ฝ”๋“œ๊ฐ€ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜๋„ ์žˆ๋‹ค.

 

์ด๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ๋‚ด๊ฐ€ ์ž‘์„ฑํ•œ ๋…ธ๋“œ์˜ ๋ฒ„์ „๋ณด๋‹ค ๋‚ฎ์„๊ฒฝ์šฐ์—” ์—…๊ทธ๋ ˆ์ด๋“œ๋ฅผ, ๋†’์„ ๊ฒฝ์šฐ์—” ๋ฒ„์ „์„ ๋‚ฎ์ถ”๋Š” ๋ฐฉ๋ฒ•์ด ์žˆ๋Š”๋ฐ

ํ•ด๋‹น ํŒŒ์ผ์˜ ๋ฒ„์ „์„ ๋งž์ถ”๊ธฐ ์œ„ํ•ด ๋งค๋ฒˆ Node๋ฅผ ์ƒˆ๋กœ ์„ค์น˜ํ•˜๊ฑฐ๋‚˜ ์—…๊ทธ๋ ˆ์ด๋“œ๋ฅผ ๋ฐ˜๋ณตํ•˜๋Š” ์ผ์€ ์—ฌ๊ฐ„ ๊ท€์ฐฎ์€ ์ผ์ด ์•„๋‹ˆ๋‹ค.

 

์ด๋Ÿฐ ์ˆ˜๊ณ ์Šค๋Ÿฌ์›€์„ ๋œํ•˜๊ธฐ ์œ„ํ•ด ์šฐ๋ฆฌ๋Š” NVM์„ ์‚ฌ์šฉํ•˜๋Š”๋ฐ

NVM์€ ๊ฐ„๋‹จํ•œ ๋ช…๋ น์–ด๋กœ Node๋ฅผ ์„ค์น˜ํ•˜๊ณ  ๋‹ค์–‘ํ•œ ๋…ธ๋“œ๋ฒ„์ „์„ ์†์‰ฝ๊ฒŒ ์˜ฎ๊ฒจ ๋‹ค๋‹ ์ˆ˜ ์žˆ๋‹ค.

 

 

NVM ์„ค์น˜ํ•˜๊ธฐ

์•„๋ž˜ ๋ช…๋ น์–ด๋ฅผ ํ„ฐ๋ฏธ๋„์— ์ž…๋ ฅํ•ด ์ค€๋‹ค.

$ touch ~/.bash_profile 
$ curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.35.3/install.sh | bash

 

 ์„ฑ๊ณต์ ์œผ๋กœ NVM์ด ์„ค์น˜๋˜์—ˆ๋‹ค๋ฉด NVM ๋ฒ„์ „์ž…๋ ฅ์‹œ ์ •์ƒ์ ์œผ๋กœ ์ž‘๋™ํ•˜๋Š” ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.

$ nvm --version

 

node.js ์„ค์น˜ํ•˜๊ธฐ

NVM ์„ค์น˜๋ฅผ ์™„๋ฃŒํ–ˆ๋‹ค๋ฉด NVM์„ ์ด์šฉํ•ด node.js๋ฅผ ์„ค์น˜ํ•  ์ˆ˜ ์žˆ๋‹ค.

 

๋ฐฉ๋ฒ•์€ ์„ค์น˜ํ•˜๊ณ ์žํ•˜๋Š” ๋…ธ๋“œ ๋ฒ„์ „์„ ์ž…๋ ฅํ•ด ์ฃผ๋ฉด ๋œ๋‹ค.

$ nvm install 12.18.3

 

์„ฑ๊ณต์ ์œผ๋กœ ๋…ธ๋“œ์„ค์น˜๊ฐ€ ์™„๋ฃŒ๋˜์—ˆ๋‹ค๋ฉด node๋ฒ„์ „์„ ์ž…๋ ฅ ํ™•์ธ ์‹œ ์ •์ƒ์ ์œผ๋กœ ๋‚˜์˜ค๋Š” ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.

$ node -v

 

 

 


NPM (Node Package Manager)

•ํ•„์š”ํ•œ ๋ชจ๋“ˆ์„ ๋‹ค์šด๋กœ๋“œํ•  ์ˆ˜ ์žˆ๋Š” ๋ชจ๋“ˆ๋“ค์ด ๋ชจ์—ฌ์žˆ๋Š” ๋ชจ๋“ˆ ์Šคํ† ์–ด

 

 


package.json

ํ”„๋กœ๊ทธ๋žจ์„ ์‹คํ–‰์‹œํ‚ค๊ธฐ ์œ„ํ•ด ํ•„์š”ํ•œ ๋ชจ๋“ˆ๋“ค์ด ๋ฌด์—‡์ธ์ง€, ํ”„๋กœ๊ทธ๋žจ์„ ์‹คํ–‰์‹œํ‚ค๋Š” ๋ฐฉ๋ฒ•, ํ”„๋กœ๊ทธ๋žจ์„ ํ…Œ์ŠคํŠธํ•˜๋Š” ๋ฐฉ๋ฒ• ๋“ฑ์ด ๋ช…์‹œ๋˜์–ด ์žˆ๋Š” ๊ฒƒ์ด๋‹ค.

 

์‹ค์ œ ๋ชจ๋“ˆ์ด ๋“ค์–ด๊ฐ€ ์žˆ๋Š” ๊ฒƒ์ด ์•„๋‹Œ ์–ด๋–ค ๋ชจ๋“ˆ์ธ์ง€๋งŒ ์ ํ˜€์žˆ๋‹ค.

 

ํ”„๋กœ์ ํŠธ ์ฝ”๋“œ๋ฅผ ์ „๋‹ฌํ•  ๋•Œ, ํฌํ•จํ•˜๊ณ  ์žˆ๋Š” ๋ชจ๋“  ๋ชจ๋“ˆ์„ ๋‹ค ์ „๋‹ฌํ•˜์ง€ ์•Š์•„๋„ ๋œ๋‹ค๋Š” ์žฅ์ ์ด ์žˆ๋‹ค.

(package.json์„ ์ฐธ๊ณ ํ•ด ํ•„์š”ํ•œ ๋ชจ๋“ˆ์„ npm์„ ์ด์šฉํ•ด ๋‹ค์šด๋ฐ›์œผ๋ฉด ๋œ๋‹ค)

 

dependencies

ํ”„๋กœ์ ํŠธ๊ฐ€ ๋Œ์•„๊ฐ€๊ธฐ์œ„ํ•ด ๋ฐ˜๋“œ์‹œ ํ•„์š”ํ•œ ๋ชจ๋“ˆ์ด ๋ฌด์—‡์ธ์ง€ ์ ํ˜€์žˆ๋‹ค.

"dependencies": {
  "react": "^16.8.6",
}

 

devDependencies

ํ”„๋กœ์ ํŠธ๋ฅผ ๊ฐœ๋ฐœํ•˜๋Š” ํ™˜๊ฒฝ์—์„œ ํ•„์š”ํ•œ ๋ชจ๋“ˆ๋“ค์ด ๋ฌด์—‡์ธ์ง€ ์ ํ˜€์žˆ๋‹ค.

 

์‹ค์ œ ํ”„๋กœ์ ํŠธ ๋™์ž‘์— ์ง์ ‘์ ์œผ๋กœ ์˜ํ–ฅ์„ ์ฃผ์ง€ ์•Š๋Š” ๋ชจ๋“ˆ๋“ค์ด ๋ช…์‹œ๋˜์–ด์žˆ๋‹ค.

"devDependencies": {
  "jest": "^2.3.0",
  "eslint" : "^2.0.0"
}

 

scripts

npm์œผ๋กœ ์‹คํ–‰์‹œํ‚ฌ ์ˆ˜ ์žˆ๋Š” ๋ช…๋ น์–ด๋ฅผ ์ •์˜ํ•œ๋‹ค.

 

๋ช…๋ น์–ด๋ฅผ ์ž…๋ ฅํ•˜๋ฉด ์–ด๋–ค ๋™์ž‘์„ ํ•ด์•ผ ํ•˜๋Š”์ง€ ๋ช…์‹œ๋˜์–ด์žˆ๋‹ค.

"scripts": {
  "start": "node app.js", // npm start ์ž…๋ ฅ์‹œ -> app.jsํŒŒ์ผ์„ ๋…ธ๋“œ์—์„œ ์‹คํ–‰์‹œ์ผœ๋ผ
  "test": "node test.js", // npm test ์ž…๋ ฅ์‹œ -> test.jsํŒŒ์ผ์„ ๋…ธ๋“œ์—์„œ ์‹คํ–‰์‹œ์ผœ๋ผ
}

 

 

๋ฐ˜์‘ํ˜•

๋Œ“๊ธ€