๐Ÿ“ŒLanguage/JavaScript

nvm,npm, npx, yarn๋ฅผ ์•Œ์•„๋ณด์ž!

hellohailie 2022. 6. 6. 15:31

๐Ÿค”nvm์ด๋ž€?

nvm(Node Version Manager)= Node.js ๋ฅผ ์„ค์น˜ํ•˜๋Š” ํˆด์ด์ž, Node.js์˜ ๋‹ค์–‘ํ•œ ๋ฒ„์ „์„ ๊ด€๋ฆฌํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ (Node.js์˜ ๋‹ค์–‘ํ•œ ๋ฒ„์ „์„ ์‰ฝ๊ฒŒ ์„ค์น˜ํ•  ์ˆ˜ ์žˆ๋‹ค. )

nvm์„ ์™œ ์“ฐ์ง€?

OS์— ํŠน์ • ๋ฒ„์ ผ์˜ Node.js ๋ฅผ ์„ค์น˜ํ•˜๋ฉด, ์—ฌ๋Ÿฌ ๋ฒ„์ „์˜ Node.js ๋ฅผ ์„ค์น˜ํ•ด์•ผ ํ•  ๊ฒฝ์šฐ์— ๋Œ€์‘์„ ํ•  ์ˆ˜๊ฐ€ ์—†๊ฒŒ ๋œ๋‹ค. ๊ทธ๋ ‡๊ธฐ ๋•Œ๋ฌธ์— ๋จผ์ € nvm ์„ ์„ค์น˜ํ•˜๊ณ , ์„ค์น˜ํ•œ nvm ์„ ํ†ตํ•˜์—ฌ ์›ํ•˜๋Š” ํŠน์ • ๋ฒ„์ ผ์˜ Node.js ๋ฅผ ์›ํ•˜๋Š” ์กฐ๊ฑด์— ๋”ฐ๋ผ ๋ณต์ˆ˜๋กœ ์„ค์น˜ํ•˜๋Š” ๋ฐฉ๋ฒ•์ด ๋‚˜์ค‘์„ ์œ„ํ•ด์„œ๋Š” ๋” ์ข‹์€ ๋ฐฉ๋ฒ•์ด ๋œ๋‹ค.

โญ•๏ธ nvm ์„ค์น˜ ํ›„ โž Node.js ์„ค์น˜ ํ›„โž npm ์„ค์น˜!

 


๐Ÿค”npm์ด๋ž€?

npm(Node Package Manager) = Node.js ๋กœ ๊ฐœ๋ฐœ๋œ ํ”„๋กœ๊ทธ๋žจ์„(npm ํŒจํ‚ค์ง€) ํŽธ๋ฆฌํ•˜๊ฒŒ ์„ค์น˜, ์—…๋ฐ์ดํŠธ ๋ฐ ์‚ญ์ œ๋ฅผ ํ•ด ์ฃผ๋Š” ํ”„๋กœ๊ทธ๋žจ. ์ฆ‰, ํ•„์š”ํ•œ ๋ชจ๋“ˆ์„ ๋‹ค์šด๋กœ๋“œํ•  ์ˆ˜ ์žˆ๋Š”, ๋ชจ๋“ˆ๋“ค์ด ๋ชจ์—ฌ์žˆ๋Š” ๋ชจ๋“ˆ ์Šคํ† ์–ด๋ผ๊ณ  ์ƒ๊ฐํ•˜์ž! (๐Ÿค“์ฐธ๊ณ  ์ด์— ๋Œ€ํ•œ ์ •๋ณด๋ฅผ ๋‹ด์•„๋‘” ๊ณณ์ด package.json ์ด๋‹ค.)

npm ์€ Node.js ๋ฅผ OS ์— ์ง์ ‘ ์„ค์น˜ํ•˜์˜€๋“  nvm ์œผ๋กœ ์„ค์น˜ํ•˜์˜€๋“ ์ง€์— ๊ด€๊ณ„์—†์ด, Node.js ๊ฐ€ ์„ค์น˜๋œ ์ƒํƒœ์—์„œ(Node.js ๋ฅผ ์„ค์น˜ํ•˜๋ฉด npm ๋„ ๊ฐ™์ด ์„ค์น˜๋จ.) npm๋ช…๋ น์–ด๋ฅผ ์ด์šฉํ•˜์—ฌ npm ์„œ๋น„์Šค์— ๋“ฑ๋ก๋œ Node.js ๋กœ ์ž‘์„ฑ๋œ ํŒจํ‚ค์ง€๋ฅผ ๊ด€๋ฆฌํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ ์ž…๋‹ˆ๋‹ค.

npm ๋ช…๋ น์–ด

  • npm init : package.json ์ƒ์„ฑ
  • npm install : package.json ํŒŒ์ผ ๋ฐ ํ•ด๋‹น ์ข…์†์„ฑ์— ๋‚˜์—ด๋œ ๋ชจ๋“  ๋ชจ๋“ˆ์„ ์„ค์น˜
  • npm install package_name@๋ฒ„์ „ : ํŠน์ • ํŒจํ‚ค์ง€์˜ ํŠน์ • ๋ฒ„์ „ ์„ค์น˜
  • npm install ์ฃผ์†Œ : ํŠน์ • ์ €์žฅ์†Œ ๋‚ด ํŒจํ‚ค์ง€ ์„ค์น˜. ์ฃผ๋กœ github์„ ์ด์™€ ๊ฐ™์ด ์„ค์น˜ํ•ฉ๋‹ˆ๋‹ค.
  • npm install package_name -g : ์˜ต์…˜. ๊ธ€๋กœ๋ฒŒ๋กœ ์„ค์น˜. ๋กœ์ปฌ์˜ ๋‹ค๋ฅธ ํ”„๋กœ์ ํŠธ๋„ ์ด ํŒจํ‚ค์ง€๋ฅผ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.
  • npm uninstall : ํŒจํ‚ค์ง€ ์‚ญ์ œ ๋ช…๋ น์–ด์ž…๋‹ˆ๋‹ค.
  • npm update : ์„ค์น˜ํ•œ ํŒจํ‚ค์ง€๋“ค์„ ์—…๋ฐ์ดํŠธํ•ด์ค๋‹ˆ๋‹ค.
  • npm dedupe : ์ค‘๋ณต ์„ค์น˜๋œ ํŒจํ‚ค์ง€๋“ค์„ ์ •๋ฆฌํ•ด์ฃผ๋Š” ๋ช…๋ น์–ด์ž…๋‹ˆ๋‹ค.

๐Ÿค“ package.json์ด๋ž€?

package.json์€ ํ”„๋กœ์ ํŠธ ์ •๋ณด์™€ ์˜์กด์„ฑ(dependencies)์„ ๊ด€๋ฆฌํ•˜๋Š” ๋ฌธ์„œ์ž…๋‹ˆ๋‹ค.์šฐ๋ฆฌ๊ฐ€ ์–ด๋–ค ํŒจํ‚ค์ง€(์˜คํ”ˆ์†Œ์Šค)๋ฅผ ์‚ฌ์šฉํ•˜๋Š”์ง€, ์–ด๋–ค ๋ฒ„์ „์„ ์‚ฌ์šฉํ•˜๋Š”์ง€ ๋“ฑ์„ ๊ธฐ๋กํ•จ์œผ๋กœ์จ ์–ด๋Š ๊ณณ์—์„œ๋„ ๋™์ผํ•œ ๊ฐœ๋ฐœ ํ™˜๊ฒฝ์„ ๊ตฌ์ถ•ํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ค๋‹ˆ๋‹ค.

 

์ •๋ฆฌํ•˜๋ฉด!

(1)nvm์„ ์„ค์น˜ํ•˜๊ณ  ์„ค์น˜ํ•œ nvm ์„ ์ด์šฉํ•˜์—ฌ ์›ํ•˜๋Š” ์กฐ๊ฑด์œผ๋กœ,

(2)Node.js๋ฅผ ์„ค์น˜ํ•œ ํ›„์—,

(3)npm์„ ์ด์šฉํ•˜์—ฌ ํ•„์š”ํ•œ ํŒจํ‚ค์ง€๋ฅผ ์ถ”๊ฐ€ ์„ค์น˜ํ•œ๋‹ค.


๐Ÿค”npx๋ž€?

npx๋Š” ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ํŒจํ‚ค์ง€ ๊ด€๋ฆฌ ๋ชจ๋“ˆ์ธ **npm(Node Package Module)**์˜ 5.2.0 ๋ฒ„์ „๋ถ€ํ„ฐ ์ƒˆ๋กœ ์ถ”๊ฐ€๋œ ๋„๊ตฌ์ด๋‹ค. (์ƒˆ๋กœ์šด ํŒจํ‚ค์ง€ ๊ด€๋ฆฌ ๋ชจ๋“ˆ์ด ์•„๋‹˜!)

⇒ npm๊ณผ ๋น„๊ต๋Œ€์ƒ์ด ์•„๋‹ˆ๊ณ , npm์„ ์ข€ ๋” ํŽธํ•˜๊ฒŒ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด์„œ npm์—์„œ ์ œ๊ณตํ•ด์ฃผ๋Š” ํ•˜๋‚˜์˜ ๋„๊ตฌ์ด๋‹ค.

⇒ npm@5.2.0 ์ด์ƒ ๋ฒ„์ „๋งŒ ๊น”๋ ค ์žˆ๋‹ค๋ฉด npx ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  • npx ๋Š” ํŒจํ‚ค์ง€๋ฅผ ์ž„์‹œ ์„ค์น˜ํ•ด์„œ "์‹คํ–‰"ํ•˜๋Š” ์šฉ๋„์ž…๋‹ˆ๋‹ค!

npx๋Š” ์„ค์น˜๊ฐ€ ๋ถˆ๊ฐ€๋Šฅํ•˜๊ธฐ ๋•Œ๋ฌธ์— npx ๋กœ react๋ฅผ ์„ค์น˜ํ• ๊ฑฐ๋ผ๋ฉด create-react-app ๋ผ๋Š” ๋ช…๋ น์–ด๋กœ ์‚ฌ์šฉํ•ด์„œ

CRA๊ฐ€ ์•Œ์•„์„œ react ๋ฅผ ์„ค์น˜ํ•˜๊ฒŒ ๋งŒ๋“ค์–ด์•ผ ํ•œ๋‹ค.

  • npm์€ ํŒจํ‚ค์ง€๋ฅผ ๊ด€๋ฆฌ๋งŒ ํ•˜๊ณ  ์‹คํ–‰์€ ํ•  ์ˆ˜ ์—†๋‹ค.

npm์„ ์‚ฌ์šฉํ•˜์—ฌ ํŒจํ‚ค์ง€๋ฅผ ์‹คํ–‰ํ•˜๋ ค๋ฉด package.jsonํŒŒ์ผ ์—์„œ ํ•ด๋‹น ํŒจํ‚ค์ง€๋ฅผ ์ง€์ •ํ•ด์•ผ ํ•œ๋‹ค.

๊ฒฐ๋ก ๐Ÿ‘‰ npx๋Š” npm ํŒจํ‚ค์ง€ ์‹คํ–‰๊ธฐ์ด๋‹ค.

๊ฒฐ๋ก ๐Ÿ‘‰ npm์€ ํŒจํ‚ค์ง€ ๋งค๋‹ˆ์ €์ด๊ณ  ๊ด€๋ฆฌ๋งŒ ํ•œ๋‹ค.


๐Ÿค”yarn์ด๋ž€?

ํŽ˜์ด์Šค๋ถ์—์„œ ๋งŒ๋“  ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ํŒจํ‚ค์ง€ ๋งค๋‹ˆ์ €์ด๋‹ค. npm๊ณผ ๊ฐ™์€ ๊ธฐ๋Šฅ์„ ์ˆ˜ํ–‰ํ•œ๋‹ค.

npm์˜ ๋‹จ์ ์ธ ์†๋„(performance), ์•ˆ์ •์„ฑ(stability), ๋ณด์•ˆ์„ฑ(security) ์ธก๋ฉด์„ ๊ฐœ์„ ํ•˜์˜€๋‹ค.

  • ์†๋„(perfomance)

yarn์€ ๋‹ค์šด๋ฐ›์€ ํŒจํ‚ค์ง€ ๋ฐ์ดํ„ฐ๋ฅผ ์บ์‹œ(cache)์— ์ €์žฅํ•˜์—ฌ, ์ค‘๋ณต๋œ ๋ฐ์ดํ„ฐ๋Š” ๋‹ค์šด๋กœ๋“œํ•˜์ง€์•Š๊ณ , ์บ์‹œ์— ์ €์žฅ๋œ ํŒŒ์ผ์„ ํ™œ์šฉํ•˜์—ฌ npm์— ๋น„ํ•ด ํŒจํ‚ค์ง€ ์„ค์น˜์†๋„๊ฐ€ ๋งค์šฐ ๋น ๋ฅด๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์—ฌ๋Ÿฌ๊ฐœ์˜ ํŒจํ‚ค์ง€๋ฅผ ์„ค์น˜ํ•  ๋•Œ ๋ณ‘๋ ฌ๋กœ ์ฒ˜๋ฆฌํ•˜๊ธฐ ๋•Œ๋ฌธ์— performance์™€ speed๊ฐ€ ์ฆ๊ฐ€! (npm์€ ์ˆœ์ฐจ์ )

  • ์•ˆ์ •์„ฑ(stability)๊ณผ ๋ณด์•ˆ์„ฑ(security)

npm์€ ํŒจํ‚ค์ง€๊ฐ€ ์„ค์น˜๋  ๋•Œ ์ž๋™์œผ๋กœ ์ฝ”๋“œ์™€ ์˜์กด์„ฑ์„ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋„๋ก ํ—ˆ์šฉํ•˜์—ฌ ํŽธ๋ฆฌํ•˜๊ธฐ๋„ ํ•˜์ง€๋งŒ ์•ˆ์ •์„ฑ์„ ์œ„ํ˜‘ํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ๋‹จ์ ์ด ์žˆ๋‹ค. ํŠนํžˆ ๋ณด์žฅ๋œ ์ •์ฑ… ์—†์ด ๋“ฑ๋กํ•œ ํŒจํ‚ค์ง€๊ฐ€ ์กด์žฌํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ์ ์—์„œ ๋”์šฑ ์œ„ํ—˜๋„๊ฐ€ ๋†’๋‹ค๊ณ  ํ•œ๋‹ค.

๋ฐ˜๋ฉด yarn์€ yarn.lock์ด๋‚˜ package.json์œผ๋กœ๋ถ€ํ„ฐ ์„ค์น˜๋งŒ ํ•˜๋ฉฐ, yarn.lock์€ ๋ชจ๋“  ๋””๋ฐ”์ด์Šค์— ๊ฐ™์€ ํŒจํ‚ค์ง€๋ฅผ ์„ค์น˜ํ•˜๋Š” ๊ฒƒ์„ ๋ณด์žฅํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋ฒ„์ „์˜ ์ฐจ์ด๋กœ ์ธํ•ด ์ƒ๊ธฐ๋Š” ๋ฒ„๊ทธ๋ฅผ ๋ฐฉ์ง€ํ•ด์ค„ ์ˆ˜ ์žˆ๋‹ค.

npm vs. yarn ๋‘˜ ์ค‘์— ๋ฌด์—‡์„ ์‚ฌ์šฉํ•ด์•ผํ• ๊นŒ?

์•„๋ฌด๋ฆฌ yarn์ด ์ข‹๋‹ค๊ณ  ํ•œ๋“ค, ์›์กฐ๋Š” ์ด๊ธธ ์ˆ˜ ์—†๋‹ค๊ณ  ํ•œ๋‹ค!!

yarn์ด npm์˜ ๋‹จ์ ์„ ๋ณด์•ˆํ•˜์—ฌ ๋‚˜์˜จ ๊ฒƒ์ด๊ธฐ๋Š” ํ•˜์ง€๋งŒ. npm ๋˜ํ•œ ๋ช‡๋…„๊ฐ„ ๋ฐœ์ „์„ ๊ฑฐ๋“ญํ•˜๋ฉฐ ๋‹จ์ ์„ ๋งŽ์ด ๋ณด์™„ํ–ˆ๊ธฐ ๋•Œ๋ฌธ์— ํ˜„์žฌ npm/yarn์˜ performance์™€ stability ์ฐจ์ด๋Š” ๊ทธ๋ฆฌ ํฌ์ง€ ์•Š๋‹ค๊ณ  ๋ด๋„ ๋ฌด๋ฐฉํ•˜๋‹ค๊ณ  ํ•œ๋‹ค.

'๊ฐ์ž์—๊ฒŒ ํŽธํ•œ ๊ฒƒ์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ๊ฐ€์žฅ ์ข‹์ง€๋งŒ ๋งŒ์•ฝ ๋‘˜๋‹ค ์‚ฌ์šฉํ•ด๋ณด์ง€ ์•Š์€ ์ƒํ™ฉ์ด๋ผ๋ฉด npm์„ ์‚ฌ์šฉํ•ด๋ณด๋Š” ๊ฒƒ์„ ์ถ”์ฒœํ•œ๋‹ค.'

 

 

 

 

๐Ÿ˜ƒํ˜น์‹œ๋‚˜ ์ž˜๋ชป๋œ ๊ฐœ๋… ์ „๋‹ฌ์ด ์žˆ๋‹ค๋ฉด ๋Œ“๊ธ€ ๋ถ€ํƒ๋“œ๋ฆฝ๋‹ˆ๋‹ค. ์ €์˜ ์„ฑ์žฅ์— ํฐ ๋„์›€์ด ๋ฉ๋‹ˆ๋‹ค๐Ÿค“

 

์ฐธ๊ณ 

https://velog.io/@kysung95/๊ฐœ๋ฐœ์ƒ์‹-npm๊ณผ-yarn

https://lynmp.com/ko/article/tb585d114096490055

https://basemenks.tistory.com/232