[Node.js] Node.js / npm๐Ÿ’ฏ๏ธ

jungeundelilahLEEยท2020๋…„ 12์›” 17์ผ
1

Node.js

๋ชฉ๋ก ๋ณด๊ธฐ
2/27

goal

  • Node.js๋ž€

๐Ÿ’ฏ๏ธ node.js๋Š” ๋ฌด์—‡์ด๊ณ , ์–ด๋–ป๊ฒŒ ์„ค์น˜ํ•˜๋ฉฐ, ๊ด€๋ จ๋œ ์ฃผ์š” ๊ฐœ๋…๋“ค์€ ๋ฌด์—‡์ธ์ง€์— ๋Œ€ํ•ด์„œ ์•Œ์•„๋ณด์ž!

Node.js ๐Ÿ’ฏ๏ธ


node.js๋ž€

  • JS๋ฅผ ๋ธŒ๋ผ์šฐ์ € ๋ฐ”๊นฅ์—์„œ๋„ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋„๋ก ๋„์™€์ฃผ๋Š” ์‹คํ–‰ํ™˜๊ฒฝ(=๋Ÿฐํƒ€์ž„) ๋”ฐ๋ผ์„œ, ๋ธŒ๋ผ์šฐ์ € ์—†์ด๋„ JS๋ฅผ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์–ด์ง€์…จ๋‹ค!

ํŠน์ง•

  • ์„œ๋ฒ„์‚ฌ์ด๋“œ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์ด๋ฉฐ ๊ตฌ๊ธ€์˜ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์—”์ง„์ธ V8์„ ๊ธฐ๋ฐ˜์œผ๋กœ ๊ตฌ์„ฑ๋œ ์ผ์ข…์˜ ์†Œํ”„ํŠธ์›จ์–ด ์‹œ์Šคํ…œ
  • JS๋ฅผ ๊ธฐ๊ณ„๊ฐ€ ์ดํ•ดํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•  ์ˆ˜ ์žˆ๋„๋ก ์ปดํŒŒ์ผํ•˜์—ฌ ๊ตฌ๋™ํ•˜๋ฉฐ, ์†๋„๊ฐ€ ๋น ๋ฆ„
  • ์ด๋ฒคํŠธ ๊ธฐ๋ฐ˜์œผ๋กœ ๊ฐœ๋ฐœ์ด ๊ฐ€๋Šฅํ•˜๋ฉฐ Non-Blocking I/O (InputOutput)๋ฅผ ์ง€์›ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋น„๋™๊ธฐ์‹ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์ด ๊ฐ€๋Šฅ
    • Non-Blocking : ๋‹ค์Œ ํ•จ์ˆ˜์˜ ์‹คํ–‰์ด, ํ˜„์žฌ ํ•จ์ˆ˜์˜ ์ข…๋ฃŒ๋ฅผ ๊ธฐ๋‹ค๋ฆฌ์ง€ ์•Š์Œ
    • Blocking : ๋‹ค์Œ ํ•จ์ˆ˜์˜ ์‹คํ–‰์ด, ํ˜„์žฌ ํ•จ์ˆ˜์˜ ์ข…๋ฃŒ ์ดํ›„์— ์ด๋ฃจ์–ด์ง

์ด๋ฒคํŠธ ๊ธฐ๋ฐ˜ ๋น„๋™๊ธฐ ๋ฐฉ์‹

  • ๋…ธ๋“œ๋Š” ์‹ฑ๊ธ€ ์“ฐ๋ ˆ๋“œ์™€ ์ด๋ฒคํŠธ ๊ธฐ๋ฐ˜์˜ ๋น„๋™๊ธฐ I/O ์ฒ˜๋ฆฌ๋กœ ํ•ด๊ฒฐ(๋™๊ธฐ์ ์œผ๋กœ ํ•ด๊ฒฐํ•˜์ง€ ์•Š๊ณ , ํ•œ๊บผ๋ฒˆ์— ๋ฐ›์•„์„œ ๋นจ๋ฆฌ ๋๋‚˜๋Š” ์ž‘์—…๋ถ€ํ„ฐ ์ฒ˜๋ฆฌ)ํ•˜๊ณ  ๊ทธ ์„ฑ๋Šฅ์„ ๋Œ์–ด์˜ฌ๋ฆด ์ˆ˜ ์žˆ๋„๋ก ํ•˜๋Š” ๋น„๋™๊ธฐ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๋ชจ๋ธ์„ ์ œ๊ณต]
  • ์ด๋ฒคํŠธ๋ฃจํ”„ (You Tube)
  • ์ด๋ฒคํŠธ๋ฃจํ”„ ์‹คํ–‰ ์ˆœ์„œ ์•Œ์•„๋ณด๊ธฐ

NPM์„ ํ†ตํ•œ ๋‹ค์–‘ํ•œ ํ™•์žฅ ๋ชจ๋“ˆ๋“ค

  • ๋…ธ๋“œ๋Š” ํ™•์žฅ์„ฑ์ด ๋›ฐ์–ด๋‚œ ๋ชจ๋“ˆ ๊ตฌ์กฐ๋ฅผ ๊ฐ€์ง€๋Š”๋ฐ, ๊ธฐ๋ณธ์ ์œผ๋กœ ์ œ๊ณตํ•˜๋Š” ๋ชจ๋“ˆ ์ด์™ธ์˜ ๋‹ค์–‘ํ•œ ํ™•์žฅ ๋ชจ๋“ˆ์„ ์„ค์น˜ํ•˜์—ฌ ์‚ฌ์šฉ ๊ฐ€๋Šฅ
  • NPM์ด๋ผ๋Š” ์„ค์น˜๊ด€๋ฆฌ์ž๋ฅผ ํ†ตํ•ด ํ™•์žฅ ๋ชจ๋“ˆ์„ ์‰ฝ๊ฒŒ ์„ค์น˜

๊ตฌ์กฐ

  • ๋…ธ๋“œ๋Š” ์„œ๋ฒ„ ์ชฝ์—์„œ ๋™์ž‘ํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ๋งŒ๋“œ๋Š” ๊ฒƒ์ด ์ฃผ ์ž„๋ฌด๊ธฐ ๋•Œ๋ฌธ์— ๊ธฐ๋ณธ ๊ธฐ๋Šฅ์ธ '์†Œ์ผ“'์ด๋‚˜ 'HTTP ํ”„๋กœํ† ์ฝœ'์„ ์‚ฌ์šฉํ•ด ๋ฐ์ดํ„ฐ๋ฅผ ์†ก์ˆ˜์‹ ํ•˜๋Š” ๊ธฐ๋Šฅ์„ ํฌํ•จ


npm ๐Ÿ’ฏ๏ธ

์ •์˜

  • ๋…ธ๋“œ์˜ ๋ชจ๋“ˆ ํŒจํ‚ค์ง€ ๊ด€๋ฆฌ ๋„๊ตฌ
  • ํ™•์žฅ ๋ชจ๋“ˆ์˜ ๊ด€๋ฆฌ์— ์šฉ์ด
  • ๐Ÿ‘‰๏ธ npm ๊ณตํ™ˆ

ํ™•์žฅ๋ชจ๋“ˆ & npm

  • ํ™•์žฅ ๋ชจ๋“ˆ์„ ์‚ฌ์šฉํ•˜์—ฌ ๊ฐœ๋ฐœํ•œ ๊ฒฐ๊ณผ๋ฌผ์„ ๋ฐฐํฌํ•  ๋•Œ๋Š” ์†Œ์Šค๊ฐ€ ์˜์กดํ•˜๋Š” ํ™•์žฅ ๋ชจ๋“ˆ๋„ ํ•จ๊ป˜ ์„ค์น˜๋˜์–ด์•ผ

  • npm [๋ช…๋ น์–ด] [ํƒ€๊ฒŸ ๋ชจ๋“ˆ ์ด๋ฆ„] [์˜ต์…˜]

  • npm install [๋ชจ๋“ˆ๋ช…]

  • npm install -g npm : ์ตœ์‹ ๋ฒ„์ „ ์—…๊ทธ๋ ˆ์ด๋“œ

  • npm init : setting / npm์€ package.json์„ ๋งŒ๋“œ๋Š” ๋ช…๋ น์–ด๋ฅผ ์ œ๊ณตํ•œ๋‹ค

    - package name : (ํด๋”๋ช…) [ํ”„๋กœ์ ํŠธ ์ด๋ฆ„ ์ž…๋ ฅ]
    - version : (1.0.0) [ํ”„๋กœ์ ํŠธ ๋ฒ„์ „ ์ž…๋ ฅ]
    - description : [ํ”„๋กœ์ ํŠธ ์„ค๋ช… ์ž…๋ ฅ]
    - entry point : (index.js) [press enter key]
    - test command : [press enter key]
    - git repository : [press enter key]
    - keywords : [press enter key]
    - author : [๊ฐœ๋ฐœ์ž ์ด๋ฆ„]
    - license : (ISC) [press enter key]

    ๊นŒ์ง€ ์ž…๋ ฅํ•˜๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์ด package.json ํŒŒ์ผ์— ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ƒ์„ฑ๋œ๋‹ค.

  • ์–ด๋–ค ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์„ค์น˜ํ–ˆ๋Š”์ง€ ๊ธฐ๋กํ•˜๋Š” ๊ณณ : package.json ํŒŒ์ผ (์ž๋™์ƒ์„ฑ)

    • package.json์—์„œ scripts ๋ถ€๋ถ„์€ npm ๋ช…๋ น์–ด๋ฅผ ์ €์žฅํ•œ๋‹ค. npm run [script ๋ช…๋ น์–ด]

ํ™•์žฅ๋ชจ๋“ˆ ์„ค์น˜ ๋ฐ ๊ด€๋ฆฌ

  • ์—ฌ๋Ÿฌ๊ฐœ์˜ ํŒจํ‚ค์ง€ ์„ค์น˜ : npm install [] [] []..

  • ๊ฐœ๋ฐœ์šฉ ํŒจํ‚ค์ง€ ์„ค์น˜ : npm install --save -dev []

  • ๊ธ€๋กœ๋ฒŒ (์ „์—ญ)๋กœ ์„ค์น˜

    • ์„ค์น˜๊ฒฝ๋กœ/node_modules ๋””๋ ‰ํ„ฐ๋ฆฌ์— ์„ค์น˜
    • nodemon, express ์ถ”์ฒœ
      • nodemon ์„ค์น˜ : npm install nodemon -D
      • nodemon ์‹คํ–‰ : nodemon app.js
        nodemon app.js localhost 3000
        nodemon --debug app.js 80
    • npm install [๋ชจ๋“ˆ๋ช…] -g : ์„ค์น˜
    • npm list -g : ๊ธ€๋กœ๋ฒŒ๋กœ ์„ค์น˜๋œ ๋ชจ๋“ˆ ๋ชฉ๋ก ํ™•์ธ
  • ๋กœ์ปฌ๋กœ ์„ค์น˜

    • ํ˜„์žฌ ๊ฐœ๋ฐœ ์ค‘์ธ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ node_modules ๋””๋ ‰ํ„ฐ๋ฆฌ์— ์„ค์น˜
    • npm install [๋ชจ๋“ˆ๋ช…] : ์„ค์น˜
    • npm list : ์„ค์น˜๋œ ๋ชจ๋“ˆ ๋ชฉ๋ก ํ™•์ธ
    • npm install [๋ชจ๋“ˆ 1], [๋ชจ๋“ˆ 2], [๋ชจ๋“ˆ 3] : ์—ฌ๋Ÿฌ ๊ฐœ ๋ชจ๋“ˆ ํ•œ๊บผ๋ฒˆ์— ์„ค์น˜
    • npm install [๋ชจ๋“ˆ๋ช…@๋ฒ„์ „] : ํŠน์ • ๋ฒ„์ „์˜ ํ™•์žฅ ๋ชจ๋“ˆ ์„ค์น˜
  • ์ฃผ๊ธฐ์ ์œผ๋กœ ์ตœ์‹  ๋ฒ„์ „ ์—…๋ฐ์ดํŠธ or ์‚ญ์ œํ•˜๋ฉด์„œ ์ด์šฉํ•˜๋Š” ๊ฒƒ์„ ๊ถŒ์žฅ

  • npm list (-g) : ์„ค์น˜๋œ ํ™•์žฅ ๋ชจ๋“ˆ ํ™•์ธ

  • npm update [๋ชจ๋“ˆ๋ช…] (-g) : ํ™•์žฅ ๋ชจ๋“ˆ ์—…๋ฐ์ดํŠธ

  • npm update : ์„ค์น˜๋œ ๋ชจ๋“  ๋ชจ๋“ˆ ์—…๋ฐ์ดํŠธ

  • npm uninstall [๋ชจ๋“ˆ๋ช…] (-g) : ํ™•์žฅ ๋ชจ๋“ˆ ์‚ญ์ œ

  • npm outdated : ์—…๋ฐ์ดํŠธํ•  ์ˆ˜ ์žˆ๋Š” ํŒจํ‚ค์ง€ ์—ฌ๋ถ€ ํ™•์ธ

  • npm adduser : npm ๋กœ๊ทธ์ธ์„ ์œ„ํ•œ ๋ช…๋ น์–ด - ๋ฐฐํฌ์‹œ ํ•„์š”ํ•˜๋‹ค


npx ๋ช…๋ น์–ด

  • ์ „์—ญ์œผ๋กœ ์„ค์น˜ํ•œ ๊ฒƒ๊ณผ ๊ฐ™์€ ํšจ๊ณผ๋ฅผ ๋‚ธ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜, ์ „์—ญ ์„ค์น˜๋œ ๊ฒƒ์€ ์•„๋‹Œ.. ใ…Ž
  • ์‚ฌ์šฉ์ด์œ  ? : ์ „์—ญ ์„ค์น˜ํ•œ ํŒจํ‚ค์ง€๋Š” package.json์— ๊ธฐ๋ก๋˜์ง€ ์•Š์•„์„œ, ์žฌ์„ค์น˜์‹œ ์–ด๋ ค์šธ ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์—

์ถœ์ฒ˜ : ์กฐํ˜„์˜ node.js ๊ต๊ณผ์„œ ๊ธธ๋ฒ—

profile
delilah's journey

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