ํ‹ฐ์Šคํ† ๋ฆฌ ๋ทฐ

JS/Node.js

npm์˜ ๊ธฐ์ดˆ โญ

yunieyunie 2022. 11. 3. 10:09

๐ŸŽ npm์ด๋ž€?

๋…ธ๋“œ ํŒจํ‚ค์ง€ ๋งค๋‹ˆ์ €๋Š” ์ „ ์„ธ๊ณ„์˜ ๊ฐœ๋ฐœ์ž๋“ค์ด ๋งŒ๋“  ๋‹ค์–‘ํ•œ ๊ธฐ๋Šฅ(ํŒจํ‚ค์ง€)๋ฅผ ์„ค์น˜ํ•˜๊ณ  ๊ด€๋ฆฌํ•˜๋Š” ๋งค๋‹ˆ์ €๋‹ค.

์ „ ์„ธ๊ณ„์˜ ๊ฐœ๋ฐœ์ž๋“ค์ด ํ˜ผ์ž, ํŒ€ ๋‹จ์œ„, ํšŒ์‚ฌ ์ฐจ์›์—์„œ ์ž‘์—…ํ•œ ํŒจํ‚ค์ง€๋ฅผ npm ์ƒํƒœ๊ณ„์— ์—…๋กœ๋“œํ•˜๋Š” ๊ตฌ์กฐ๋กœ ์›ํ•˜๋Š” ํŒจํ‚ค์ง€๋ฅผ ๊ฒ€์ƒ‰ํ•˜์—ฌ npm install๋กœ ์„ค์น˜ํ•˜๋Š” ๊ฒƒ์ด๋‹ค.

npm์€ Node.js๋ฅผ ์„ค์น˜ํ•  ๋•Œ ์ž๋™์œผ๋กœ ๊ฐ™์ด ์„ค์น˜๋˜๋ฏ€๋กœ ๋”ฐ๋กœ ์„ค์น˜ํ•  ํ•„์š”๋Š” ์—†๋‹ค.
์ด์ œ vscode์—์„œ ํ”„๋กœ์ ํŠธ ํŒŒ์ผ์„ ์—ด๊ณ  ํ„ฐ๋ฏธ๋„์—์„œ ๋‹ค์Œ์„ ์ˆœ์„œ๋Œ€๋กœ ์ž…๋ ฅํ•ด๋ณด์ž.

1. npm init -y

ํ„ฐ๋ฏธ๋„์—์„œ npm init -y๋ฅผ ์ž…๋ ฅํ•˜๋ฉด package.json ํŒŒ์ผ์ด ์ƒ์„ฑ๋œ๋‹ค.

package.json์˜ ๋‚ด์šฉ์€ ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

  • name์€ ํ”„๋กœ์ ํŠธ์˜ ์ด๋ฆ„์„ ๋ช…์‹œํ•˜๋Š” ์˜ต์…˜์ด๋‹ค.
  • version์€ ํ”„๋กœ์ ํŠธ์˜ ๋ฒ„์ „์„ ์ ๋Š” ์˜ต์…˜์ด๋‹ค.
  • description์€ ํ”„๋กœ์ ํŠธ์— ๊ด€ํ•œ ์„ค๋ช…์„ ์ ๋Š” ์˜ต์…˜์ด๋‹ค.
  • main์€ ํ˜„์žฌ ํ”„๋กœ์ ํŠธ๋ฅผ ํŒจํ‚ค์ง€๋กœ ๋งŒ๋“ค์–ด npm ์ƒํƒœ๊ณ„์— ์—…๋กœ๋“œํ•  ๋•Œ ํ•„์š”ํ•œ ์˜ต์…˜์œผ๋กœ ๋‹จ์ˆœ ์›น์‚ฌ์ดํŠธ๋ฅผ ๋งŒ๋“ค๋•Œ๋Š” ์‚ญ์ œํ•ด๋„ ๋œ๋‹ค.
  • scripts๋Š” ํ˜„์žฌ ํ”„๋กœ์ ํŠธ ๋‚ด๋ถ€์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ์—ฌ๋Ÿฌ ์Šคํฌ๋ฆฝํŠธ ๋ช…๋ น์„ ๋ช…์‹œํ•ด๋†“๋Š” ์˜ต์…˜์ด๋‹ค.
  • keyword๋Š” ํ”„๋กœ์ ํŠธ์™€ ๊ด€๋ จ๋œ ํ‚ค์›Œ๋“œ๋ฅผ ์ ๋Š” ์˜ต์…˜์ด๋‹ค.
  • author๋Š” ํ”„๋กœ์ ํŠธ์˜ ์†Œ์œ ์ฃผ๋ฅผ ์ ๋Š” ์˜ต์…˜์ด๋‹ค.
  • license๋Š” ํ”„๋กœ์ ํŠธ์˜ ๋ผ์ด์„ผ์Šค๋ฅผ ๋ช…์‹œํ•˜๋Š” ์˜ต์…˜์ด๋‹ค.

2. npm install parcel-bundler -D

ํ„ฐ๋ฏธ๋„์— npm install parcel-bundler -D๋ฅผ ์ž…๋ ฅํ•˜๋ฉด ์•ฝ๊ฐ„์˜ ์‹œ๊ฐ„์ด ์ง€๋‚˜๊ณ  ์„ค์น˜๊ฐ€ ์™„๋ฃŒ๋œ๋‹ค.

ํ”„๋กœ์ ํŠธ ํŒŒ์ผ์— node_modules๋ผ๋Š” ํด๋”์™€ package-lock.jsonํŒŒ์ผ์ด ์ƒ์„ฑ๋œ๋‹ค.

node_modules์•ˆ์—๋Š” ๋ฐฉ๊ธˆ ์„ค์น˜ํ•œ parcel-bundler๊ฐ€ ๋“ค์–ด์žˆ๋‹ค.

์ฆ‰, npm install๋กœ ํŒจํ‚ค์ง€๋ฅผ ์„ค์น˜ํ•˜๋ฉด node_modules ํด๋” ์•ˆ์œผ๋กœ ๋“ค์–ด๊ฐ€๊ฒŒ ๋œ๋‹ค.

node_modules ์•ˆ์— ๋“ค์–ด์žˆ๋Š” ๋ชจ๋“  ๋ชจ๋“ˆ์€ ํ•˜๋‚˜์˜ ํŒจํ‚ค์ง€๋กœ ์„ค์น˜ํ•˜์ง€ ์•Š์€ ํŒจํ‚ค์ง€๋“ค๋„ ๊ฐ™์ด ๋“ค์–ด์žˆ๋Š” ๊ฒƒ์„ ๋ณผ ์ˆ˜ ์žˆ๋Š”๋ฐ ์ด๋Š” parcel-bundler๋ผ๋Š” ํŒจํ‚ค์ง€๋ฅผ ํ™œ์šฉํ•  ๋•Œ ํ•„์š”ํ•œ ํŒจํ‚ค์ง€๋“ค์ด๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

parcel-bundler์•ˆ์— ์žˆ๋Š” package.json์— ๋“ค์–ด๊ฐ€๋ณด๋ฉด dependencies์˜ต์…˜์— ์—ฌ๋Ÿฌ ํŒจํ‚ค์ง€๋“ค์ด ๋ช…์‹œ๋ผ ์žˆ๋‹ค.

์ฒ˜์Œ์— ๋งŒ๋“ค์—ˆ๋˜ package.json์— ๋‹ค์‹œ ๋“ค์–ด๊ฐ€๋ณด๋ฉด devDependencies ์˜ต์…˜์ด ์ƒ์„ฑ๋˜๊ณ  parcel-bundler๊ฐ€ ๋ช…์‹œ๋œ ๊ฒƒ์„ ๋ณผ ์ˆ˜ ์žˆ๋‹ค.

3. npm install lodash

ํ„ฐ๋ฏธ๋„์— npm install lodash๋ฅผ ์ž…๋ ฅํ•˜๋ฉด package.json์˜ dependencies ์˜ต์…˜์— lodash๊ฐ€ ๋ช…์‹œ๋œ ๊ฒƒ์„ ๋ณผ ์ˆ˜ ์žˆ๋‹ค.

์ฆ‰, npm install์„ ํ•˜๋ฉด ํŒจํ‚ค์ง€๊ฐ€ ์„ค์น˜๋˜๊ณ  node_modules ํด๋”๋กœ ๋“ค์–ด๊ฐ€๋Š”๋ฐ ๊ทธ ๋‚ด์—ญ์ด package.json์˜ dependencies ์˜ต์…˜์— ๋ช…์‹œ๋˜๋Š” ๊ฒƒ์ด๋‹ค.

ํ˜น์‹œ node_modules ํด๋”๋ฅผ ์‹ค์ˆ˜๋กœ ์‚ญ์ œํ•ด๋„ package.json์˜ dependencies์—๋Š” ๋‚ด์—ญ์ด ๊ทธ๋Œ€๋กœ ๋‚จ๋Š”๋‹ค.

๋”ฐ๋ผ์„œ ํ„ฐ๋ฏธ๋„์—์„œ npm install (npm i)์„ ์ž…๋ ฅํ•˜๋ฉด package.json ๋‚ด์šฉ์„ ๋ฐ”ํƒ•์œผ๋กœ ๋‹ค์‹œ ํ•œ ๋ฒˆ์— node_modules๋ฅผ ์„ค์น˜ํ•  ์ˆ˜ ์žˆ๋‹ค.

ํŠน์ • ํŒจํ‚ค์ง€๋ฅผ ์„ค์น˜ํ•˜๋ฉด package-lock.jsonํŒŒ์ผ์ด ์„ค์น˜๋˜๋Š”๋ฐ ์—ฌ๊ธฐ์—๋Š” package.json์— ๋ช…์‹œ๋œ ๋ชจ๋“ˆ๋“ค์ด ๋‚ด๋ถ€์ ์œผ๋กœ ์‚ฌ์šฉํ•˜๋Š” ๋˜ ๋‹ค๋ฅธ ๋ชจ๋“ˆ ๋˜๋Š” ํŒจํ‚ค์ง€์— ๋Œ€ํ•œ ์ •๋ณด๊ฐ€ ์ž๋™์œผ๋กœ ๋“ค์–ด๊ฐ€๊ฒŒ ๋œ๋‹ค.

์ด๋ฆ„์— lock์ด ์žˆ๋“ฏ ๋‚ด๊ฐ€ ์ง์ ‘์ ์œผ๋กœ ๊ด€๋ฆฌํ•  ํ•„์š”๊ฐ€ ์—†๋‹ค.

๐Ÿ’ฅnode_modules์€ ์‚ญ์ œํ•ด๋„ ์–ธ์ œ๋“  ๋‹ค์‹œ ์„ค์น˜ํ•  ์ˆ˜ ์žˆ์ง€๋งŒ package.json๊ณผ package-lock.json๋Š” ์ ˆ๋Œ€๋กœ ์‚ญ์ œ๋˜์–ด์„œ๋Š” ์•ˆ๋œ๋‹ค.๐Ÿ’ฅ

๐Ÿค” -D๋Š” ๋ญ์ง€?

์„ค์น˜ํ•  ๋•Œ ๋’ค์— -D๋ฅผ ๋ถ™์ด๋ฉด devDependencies์— ์„ค์น˜๋˜๊ณ  ๋ถ™์ด์ง€ ์•Š์œผ๋ฉด dependencies์— ์„ค์น˜๊ฐ€ ๋˜๋Š”๋ฐ ์ฐจ์ด๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

-D๋ฅผ ๋ถ™์ด๋ฉด ๊ฐœ๋ฐœ์šฉ ์˜์กด์„ฑ ํŒจํ‚ค์ง€ ์„ค์น˜๋กœ ๋‚˜์ค‘์— ์›น๋ธŒ๋ผ์šฐ์ €์—์„œ๋Š” ํ•„์š”ํ•˜์ง€ ์•Š๋‹ค๋Š” ์˜๋ฏธ์ด๋‹ค.

๋ถ™์ด์ง€ ์•Š์œผ๋ฉด ์ผ๋ฐ˜ ์˜์กด์„ฑ ํŒจํ‚ค์ง€๋กœ ์‹ค์ œ ์›น๋ธŒ๋ผ์šฐ์ €์—์„œ๋„ ๋™์ž‘ํ•  ์ˆ˜ ์žˆ์Œ์„ ์ „์ œ๋กœ ํ•˜๋Š” ๊ฒƒ์ด๋‹ค.

์ฆ‰, ํŒจํ‚ค์ง€๋ฅผ ์„ค์น˜ํ•  ๋•Œ ๊ฐœ๋ฐœํ•  ๋•Œ๋งŒ ์‚ฌ์šฉํ•  ๊ฒƒ์ธ์ง€ ์‹ค์ œ ์›น์‚ฌ์ดํŠธ์—์„œ ๋™์ž‘ํ•˜๋Š” ์šฉ๋„์ธ์ง€๋ฅผ ๊ตฌ๋ถ„ํ•˜์—ฌ ์„ค์น˜ํ•ด์•ผ ํ•œ๋‹ค.

๋”ฐ๋ผ์„œ ์•ž์„œ ์„ค์น˜ํ•œ parcel-bundler๋Š” ๊ฐœ๋ฐœ์šฉ์œผ๋กœ ์„ค์น˜ํ•œ ๊ฒƒ์ด๊ณ  lodash๋Š” ์‹ค์ œ ์›น์‚ฌ์ดํŠธ์—์„œ ๋™์ž‘์‹œํ‚ค๋Š” ์šฉ๋„๋ผ๊ณ  ๋ณผ ์ˆ˜ ์žˆ๋‹ค.

๋Œ“๊ธ€