๐Ÿ“ฆ npm๊ณผ package.json

์ง€์€ยท2022๋…„ 9์›” 2์ผ
1

Node.js Library

๋ชฉ๋ก ๋ณด๊ธฐ
3/14
post-thumbnail

ํŒจํ‚ค์ง€์™€ ํŒจํ‚ค์ง€ ๋งค๋‹ˆ์ €

ํŒจํ‚ค์ง€

: ํ•˜๋‚˜์˜ ํ”„๋กœ๊ทธ๋žจ์ด ์„ค์น˜๋˜๊ณ  ๋™์ž‘ํ•˜๊ธฐ ์œ„ํ•œ ์—ฌ๋Ÿฌ ํŒŒ์ผ์„ ๋‹ด๊ณ  ์žˆ๋Š” ํ•˜๋‚˜์˜ ์••์ถ• ํŒŒ์ผ

ํŒจํ‚ค์ง€ ์•ˆ์— ๋“ค์–ด์žˆ๋Š” ํŒŒ์ผ ๊ตฌ์„ฑ

  • ํ”„๋กœ๊ทธ๋žจ ํŒŒ์ผ
  • ํ”„๋กœ๊ทธ๋žจ ์„ค์น˜ ํŒŒ์ผ
  • ํ”„๋กœ๊ทธ๋žจ ์„ค์น˜ ์„ค๋ช…์„œ
  • ํ”„๋กœ๊ทธ๋žจ์— ๋Œ€ํ•œ ์ •๋ณด๋ฅผ ๋‹ด์€ ํŒŒ์ผ

ํŒจํ‚ค์ง€ ๋งค๋‹ˆ์ €

: ํŒจํ‚ค์ง€์˜ ์„ค์น˜, ๋ณ€๊ฒฝ, ์‚ญ์ œ ๋“ฑ ๊ด€๋ฆฌ๋ฅผ ํŽธ๋ฆฌํ•˜๊ฒŒ ํ•ด์ฃผ๋Š” ํˆด


npm

npm (Node Package Manger)

: Node.js ์ƒํƒœ๊ณ„์˜ ํŒจํ‚ค์ง€ ๋งค๋‹ˆ์ €
(macOS์˜ ํŒจํ‚ค์ง€ ๋งค๋‹ˆ์ €๊ฐ€ brew์ด๋“ฏ, node.js ์ƒํƒœ๊ณ„์—์„œ ํŒจํ‚ค์ง€ ๋งค๋‹ˆ์ €๋Š” npm์ด๋‹ค.)

  • Node.js ํ™˜๊ฒฝ์—์„œ ์™ธ๋ถ€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ๋‹ค์šด๋กœ๋“œ ํ•˜๊ธฐ ์œ„ํ•œ ๋ฐฉ๋ฒ•๋“ค ์ค‘ ํ•˜๋‚˜์ด๋‹ค.
  • ํ•„์š”ํ•œ ๋ชจ๋“ˆ์„ ๋‹ค์šด๋กœ๋“œ ํ•  ์ˆ˜ ์žˆ๋Š” ๋ชจ๋“ˆ ์Šคํ† ์–ด๋กœ, ์•ž์œผ๋กœ ํ•„์š”ํ•œ ๋ชจ๋“ˆ์˜ ๋Œ€๋ถ€๋ถ„์€ npm์—์„œ ๋‹ค์šด๋กœ๋“œํ•ด์„œ ์‚ฌ์šฉํ•˜๋ฉด ๋œ๋‹ค.

npm ๋ชจ๋“ˆ

: ์‚ฌ๋žŒ๋“ค์ด ๋งŒ๋“ค์–ด ๋†“์€ ๊ฒ€์ฆ๋œ ์ฝ”๋“œ(๋ชจ๋“ˆ)


package.json

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

  • package.json์—์„œ ํ•„์š”ํ•˜๋‹ค๊ณ  ํ•˜๋Š” ๋ชจ๋“ˆ๋“ค์€ npm์„ ์ด์šฉํ•ด ๋‹ค์šด๋กœ๋“œ ํ•˜๋ฉด ๋œ๋‹ค.
  • npm install ๋ช…๋ น์–ด๋กœ ๋ชจ๋“ˆ๋“ค์˜ ๋‹ค์šด๋กœ๋“œ๊ฐ€ ์™„๋ฃŒ๋˜๋ฉด node.modules ๋ผ๋Š” ํด๋”๊ฐ€ ์ƒ์„ฑ๋˜๋Š” ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.
  • ์ด๋•Œ, ํ”„๋กœ๊ทธ๋žจ์„ ์‹คํ–‰์‹œํ‚ค๊ธฐ ์œ„ํ•ด ํ•„์š”ํ•œ ์‹ค์ œ ๋ชจ๋“ˆ์€ node.modules๋ผ๋Š” ํด๋”์— ์ €์žฅ๋˜๊ณ , package.json์€ ์–ด๋–ค ๋ชจ๋“ˆ์ด ๋“ค์–ด๊ฐ€ ์žˆ๋Š”์ง€๋งŒ ์ ํ˜€์žˆ๋‹ค.


dependency (์˜์กด์„ฑ ๋ชจ๋“ˆ)

: ์–ด๋–ค ์™ธ๋ถ€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์— ์˜์กด์„ฑ(dependency)์„ ๊ฐ€์ง€๊ณ  ์žˆ๋Š”์ง€, ํ•ด๋‹น ํ”„๋กœ์ ํŠธ๊ฐ€ ๊ตฌ๋™๋˜๊ธฐ ์œ„ํ•ด ์–ด๋–ค ๋ชจ๋“ˆ๋“ค์ด ํ•„์š”ํ•œ์ง€๋ฅผ ๋‚˜ํƒ€๋‚ธ๋‹ค.

  • JSON ํ˜•์‹์—์„œ ํ‚ค๋Š” "๋ชจ๋“ˆ ์ด๋ฆ„"์ด๊ณ , ๊ฐ’์€ "version"์ด๋‹ค.

dependencies

: ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋™์ž‘๊ณผ ์—ฐ๊ด€๋œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ
ex. underscore, React ๋“ฑ
npm install [๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ช…] ๋˜๋Š” npm install --save [๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ช…]

npm install --save react # react๋ฅผ ์„ค์น˜ํ•˜๊ณ , dependencies์— ์ถ”๊ฐ€ํ•œ๋‹ค.

devDependencies

: ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋™์ž‘๊ณผ ๊ด€๊ณ„ ์—†๋Š”, ์˜ค๋กœ์ง€ ๊ฐœ๋ฐœ์„ ์œ„ํ•ด ํ•„์š”ํ•œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ
ex. ์ฝ”๋“œ ๋ชจ์–‘์„ ์žก์•„์ฃผ๋Š” lint, ํ…Œ์ŠคํŒ… ๋ชจ๋“ˆ ๋“ฑ
npm install [๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ช…] --save-dev ๋˜๋Š” npm install [๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ช…] -D

npm install mocha --save-dev # mocha๋ฅผ ์„ค์น˜ํ•˜๊ณ , devDependencies์— ์ถ”๊ฐ€ํ•œ๋‹ค.

scripts (npm script)

: CLI์—์„œ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ๋ช…๋ น์„ ๊ธฐ์ˆ ํ•œ๋‹ค.

npm run [์Šคํฌ๋ฆฝํŠธ๋ช…]์œผ๋กœ CLI๋ฅผ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋‹ค.

scripts ํ•ญ๋ชฉ

์ฃผ๋กœ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์ž‘์—…๋“ค์„ scripts ํ•ญ๋ชฉ์— ๊ธฐ์ˆ ํ•œ๋‹ค.

{
  "scripts": {
  	"start": "node index.js",
    "test": "mocha test/index.test.js",
    "lint": "eslint"
  },
}
  • npm run start : node.js ์•ฑ์„ ์‹คํ–‰ํ•œ๋‹ค.
  • npm run test : ํ…Œ์ŠคํŠธ๋ฅผ ์‹คํ–‰ํ•œ๋‹ค.
  • npm run lint : ์ฝ”๋“œ๋ฅผ ๊ฒ€์‚ฌํ•œ๋‹ค.

package.json ํŒŒ์ผ ์ƒ์„ฑํ•˜๋Š” ๋ฒ•

npm init

npm init : npm์„ ์“ธ์ˆ˜ ์žˆ๋Š” ์ดˆ๊ธฐ ํ™˜๊ฒฝ์„ ์„ค์ •ํ•ด์ฃผ๊ณ , package.json ํŒŒ์ผ์„ ๋งŒ๋“œ๋Š” ๋ช…๋ น์–ด

  • ๋ช…๋ น์–ด๋ฅผ ์ž…๋ ฅํ•˜๋ฉด ์•„๋ž˜์ฒ˜๋Ÿผ package.json ํŒŒ์ผ์— ๋“ค์–ด๊ฐˆ ์ •๋ณด๋“ค์„ ์ฐจ๋ก€๋Œ€๋กœ ์ž…๋ ฅํ•  ์ˆ˜ ์žˆ๋‹ค.
  • ์ •๋ณด๋ฅผ ์ž…๋ ฅํ•˜์ง€ ์•Š๊ณ  enter๋ฅผ ๋ˆ„๋ฅด๋ฉด ์†Œ๊ด„ํ˜ธ( ) ์•ˆ์˜ ๊ธฐ๋ณธ๊ฐ’์œผ๋กœ ์ƒ์„ฑ๋œ๋‹ค.

npm init -y : ์œ„์˜ ๊ณผ์ •์„ ๋ชจ๋‘ ์ƒ๋žตํ•˜๋ฉด์„œ package.json ํŒŒ์ผ์„ ์ƒ๋žตํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด ์˜ต์…˜ -y๋ฅผ ์ด์šฉํ•˜๋ฉด ๋œ๋‹ค.

npm init -h ๋˜๋Š” npm init --help๋ฅผ ์ž…๋ ฅํ–ˆ์„ ๋•Œ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋Š” npm init์˜ ์˜ต์…˜๋“ค

profile
๊ฐœ๋ฐœ ๊ณต๋ถ€ ๊ธฐ๋ก ๋ธ”๋กœ๊ทธ

0๊ฐœ์˜ ๋Œ“๊ธ€