npm ๊ทธ๋ฆฌ๊ณ  node.js

2022. 1. 3. 17:08ใ†npm

npm ๊ทธ๋ฆฌ๊ณ  node.js

 

NodeJS๋Š”?

node.js๋Š” ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์‹คํ–‰ํ• ์ˆ˜์žˆ๋Š” ํ™˜๊ฒฝ์ด๋‹ค.

์ด๋ฅผ ์ด์šฉํ•˜์—ฌ ๋ธŒ๋ผ์šฐ์ € ๋ฐ–์—์„œ๋„ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋ฅผ ์‚ฌ์šฉ๊ฐ€๋Šฅํ•˜๊ธฐ์— ๋„ค์ดํ‹ฐ๋ธŒ ์•ฑ, ์ปค๋งจ๋“œ๋ผ์ธ ๋ช…๋ น์–ด ๊ฐœ๋ฐœ, ํ”„๋ก ํŠธ์—”๋“œ ๊ฐœ๋ฐœ, ๋ฐฑ์—”๋“œ ๊ฐœ๋ฐœ ๋“ฑ์—์„œ ์‚ฌ์šฉ์ด ๋œ๋‹ค.

npm์€?

npm์€ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋กœ ์ด๋ฃจ์–ด์ง„ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ๊ด€๋ฆฌํ•˜๋Š” ๋„๊ตฌ์ด๋‹ค.

์ด๋ฅผ ์ด์šฉํ•˜์—ฌ ์œ ์šฉํ•œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋“ค์„ ์†์‰ฝ๊ฒŒ ์„ค์น˜ํ•˜๊ณ  ์‚ญ์ œํ•˜๊ณ  ์„ค์ •์„ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ๋‹ค.

 

npm init -y๋ฅผ ํ•˜๋ฉด ๊ธฐ๋ณธ๊ฐ’์œผ๋กœ package.jsonํŒŒ์ผ์ด ์ƒ์„ฑ๋œ๋‹ค. 

 

package.json ํŒŒ์ผ ๋‚ด๋ถ€๋Š” ์•„๋ž˜์™€ ๊ฐ™๋‹ค.

 

{
  "name": "npm",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "author": "",
  "license": "ISC"
}

 

์—ฌ๊ธฐ์„œ npm install react๋ฅผ ํ•œ๋‹ค๋ฉด node_modules๋ผ๋Š” ํด๋”๊ฐ€ ์ƒ๊ธฐ๋ฉด์„œ react๋ผ๋Š” ํด๋”๊ฐ€ ์ƒ๊ธฐ๊ณ  ์ด ์•ˆ์—๋Š” distํด๋”๊ฐ€ ์ƒ๊ธด๋‹ค. ์ด distํด๋”์—๋Š” ์—ฌ๋Ÿฌ ํ•จ์ˆ˜๋“ค๊ณผ ์••์ถ•๋œ ํŒŒ์ผ์ด ์กด์žฌํ•œ๋‹ค.

package.jsonํŒŒ์ผ์— dependencies๊ฐ€ ์ƒ๊ธด๋‹ค.

 

npm install ํ›„ package.jsonํŒŒ์ผ

{
  "name": "npm",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "keywords": [],
  "author": "",
  "license": "ISC",
  "dependencies": {
    "react": "^17.0.2"
  }
}

 

์šฐ๋ฆฌ๋Š” ๊ฐœ๋ฐœํ•˜๋ฉด์„œ package.jsonํŒŒ์ผ์— ์ž์ฃผ ๋“ค๋ฆด ๊ฒƒ์ด๋‹ค. ์ด์œ ๋Š” ํ”„๋กœ์ ํŠธ์— ์ˆ˜๋งŽ์€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋“ค์ด ์žˆ๊ณ  ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๊ฐ„์˜ ํ˜ธํ™˜์ด๋‚˜ ์—…๋ฐ์ดํŠธ์— ๋”ฐ๋ฅธ ๋ฒ„์ „๊ด€๋ฆฌ๋ฅผ ํ•ด์ค˜์•ผํ•˜๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. 

 

์ •๋ฆฌํ•ด๋ณด๋ฉด

 

npm์„ ์ด์šฉํ•˜๋ฉด ์ฝ”๋“œ์˜ ๊ฐ€๋…์„ฑ์ด ์ข‹์•„์ง„๋‹ค. npm์ด ์—†๋‹ค๋ฉด ํ•ด๋‹น ์‚ฌ์ดํŠธ์— ๋“ค์–ด๊ฐ€์„œ cdn์„ ๋ณต์‚ฌํ•ด์„œ html์ฝ”๋“œ์— ๋„ฃ์–ด์ฃผ์–ด์•ผํ•œ๋‹ค. ์ˆ˜์ฒœ๊ฐœ์˜ html์ค„์—์„œ script๋ถ€๋ถ„๋งŒ์„ ctrl+F๋กœ ์ฐพ๋Š” ํ–‰์œ„๋Š” ์ฐธ ๊ท€์ฐฎ์€ ์ผ์ด๋‹ค. npm์˜ package.json๋งŒ ์ด์šฉํ•˜๋ฉด ์ด๋Ÿด ์ผ์ด ์—†์–ด์ง„๋‹ค. 

 

๋‘๋ฒˆ์งธ๋กœ๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๊ฐ„์˜ ์˜์กด์„ฑ์„ ์ค„์—ฌ์ค„ ์ˆ˜ ์žˆ๋‹ค. ์—ฐ๊ด€์ด ์žˆ๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋“ค ๊ฐ„์— ์—ฐ๊ด€์„ฑ์ด ์žˆ๋‹ค๊ณ  ๊ฐ€์ •ํ•  ๋•Œ ํ•˜๋‚˜๋Š” ์—…๋ฐ์ดํŠธ๊ฐ€ ๋˜๊ณ  ํ•˜๋‚˜๋Š” ์—…๋ฐ์ดํŠธ๋˜์ง€ ์•Š๋Š”๋‹ค๋ฉด ์–ธ์–ด๊ฐ„์˜ ์˜ค๋ฅ˜๊ฐ€ ์ƒ๊ธธ ์ˆ˜ ์žˆ๋‹ค. package.json์— ๋ฒ„์ „์ด ๋‹ค ๋‚˜์™€์žˆ์œผ๋‹ˆ ์–ผ๋งˆ๋‚˜ ํŽธํ•˜๊ฒŒ ์กฐ์ž‘์ด ๊ฐ€๋Šฅํ•œ๊ฐ€? 

 

๋งˆ์ง€๋ง‰์œผ๋กœ npm install์˜ ์ง€์—ญ์„ค์น˜์™€ ์ „์—ญ์„ค์น˜์— ๋Œ€ํ•ด ์–˜๊ธฐํ•˜๋ ค๊ณ  ํ•œ๋‹ค.

npm install ์‚ฌ์šฉ๋ฐฉ๋ฒ•

์ง€์—ญ์„ค์น˜๋Š” npm install react์ฒ˜๋Ÿผ ์•„๋ฌด๋Ÿฐ ์ˆ˜์‹๋„ ๋ถ™์ด์ง€ ์•Š์€ ์„ค์น˜๋ฅผ ๋งํ•œ๋‹ค. 

์ „์—ญ์„ค์น˜๋Š” npm install react --global์ฒ˜๋Ÿผ --global๋˜๋Š” --g๋ฅผ ๋ถ™์—ฌ์ค€ ์„ค์น˜์ด๋‹ค.

๊ทธ๋Ÿผ ์–ธ์ œ ์ง€์—ญ์„ค์น˜๋ฅผ ํ•˜๊ณ  ์–ธ์ œ ์ „์—ญ์„ค์น˜๋ฅผ ํ•ด์•ผํ• ๊นŒ?

์ง€์—ญ์„ค์น˜๋Š” ๊ฐœ๋ฐœํ•˜๊ณ  ์žˆ๋Š” ํ•ด๋‹น ํ”„๋กœ์ ํŠธ์—์„œ๋งŒ ์‚ฌ์šฉํ• ๋•Œ ์ง€์—ญ์„ค์น˜๋ฅผ ํ•ด์ค€๋‹ค. 

์ „์—ญ์„ค์น˜๋Š” ์ „์ฒด์ ์œผ๋กœ ์‚ฌ์šฉํ•˜๊ณ , ๊ฐœ๋ฐœ์— ํ•„์š”ํ•œ ๋ณด์กฐ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ผ๊ณ  ํŒ๋‹จ๋  ๋•Œ ์ „์—ญ์„ค์น˜๋ฅผ ํ•ด์ค€๋‹ค. 

์ฐธ๊ณ ๋กœ ์ง€์—ญ์„ค์น˜๋Š” node_modulesํด๋” ์•„๋ž˜์— ์ „๋ถ€ ์„ค์น˜๊ฐ€ ๋˜๊ณ  ์ „์—ญ์„ค์น˜๋Š” ์‹œ์Šคํ…œ์ฐจ์›์—์„œ์˜ ๋‹ค๋ฅธ ๋””๋ ‰ํ† ๋ฆฌ์— ์„ค์น˜๊ฐ€ ๋œ๋‹ค. ์œˆ๋„์šฐ : c:\Users\%USERNAME%\AppData\Roaming\npm\node_modules

dependencises vs devdependencises

dependencies : ๋ฐฐํฌ์šฉ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ

devdependencies : ๊ฐœ๋ฐœ์šฉ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ

npm install webpack๋ฅผ ํ•˜๋ฉด dependencies๊ฐ€ ์ƒ๊ธฐ๊ณ  npm install webpack --save-dev๋ฅผ ํ•˜๋ฉด devdependencies๊ฐ€ ์ƒ๊ธฐ๋Š”๋ฐ ์ฐจ์ด์ ์€ ์ „์ž๋Š” npm run build์‹œ์— ๊ฐ™์ด ๋กœ๋“œ๊ฐ€ ๋˜๊ณ  ํ›„์ž๋Š” ๋กœ๋“œ๋˜์ง€์•Š๋Š”๋‹ค. ์ฆ‰ ๋ธŒ๋ผ์šฐ์ €๋ฅผ ํ‚ฌ๋•Œ๋Š” dependencies๋งŒ ๋ถ€ํ•˜๊ฐ€ ์ƒ๊ธด๋‹ค๋Š” ๊ฒƒ์ด๋‹ค. ์ด๋Ÿฌํ•œ ๊ฒƒ๋“ค์„ ์ž˜ ๊ณ ๋ คํ•ด์„œ ์ „์—ญ์œผ๋กœ ์„ค์น˜ํ• ์ง€ ์ง€์—ญ์œผ๋กœ ์„ค์น˜ํ•  ์ง€ ์ •ํ•˜๋ฉด ๋œ๋‹ค.

์‚ฌ์‹ค ํ•ด๋‹น ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์›น์‚ฌ์ดํŠธ์— ๋“ค์–ด๊ฐ€์„œ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ์‹์„ ์ด์šฉํ•˜๋Š” ๊ฒŒ ์ œ์ผ ์ข‹๋‹ค.