Webpack - (3) Node.js ์™€ NPM ์„ ์•„๋Š” ๊ฒƒ์ด ํž˜์ด๋‹ค.

2024. 7. 17. 14:26ใ†Front End CS ์ง€์‹

 

Node.js ์™€ NPM์„ ์•Œ๋ฉด ์›นํŒฉ์„ ๋‹ค๋ฃจ๊ธฐ ์šฉ์ดํ•ด์ง‘๋‹ˆ๋‹ค.

 

Node.js

  • ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์ฝ”๋“œ๋ฅผ ์„œ๋ฒ„์—์„œ ์‹คํ–‰ํ•˜๊ธฐ ์œ„ํ•œ ๋Ÿฐํƒ€์ž„ ํ™˜๊ฒฝ์ž…๋‹ˆ๋‹ค.
  • ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋ฅผ ๋ฐฑ์—”๋“œ์—์„œ๋„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์ „์ฒด ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ํ•˜๋‚˜์˜ ์–ธ์–ด๋กœ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 

Node.js ์‹คํ–‰

App.js ํŒŒ์ผ์—์„œ ๋‹ค์Œ ๋ช…๋ น์–ด๋ฅผ ์ž…๋ ฅํ•˜๊ณ  ,

// App.js

console.log('hello')

ํ„ฐ๋ฏธ๋„์„ ์ด์šฉํ•˜์—ฌ ํ•ด๋‹น ๊ฒฝ๋กœ์—์„œ node ๋ช…๋ น์–ด๋กœ ํŒŒ์ผ์„ ์‹คํ–‰ํ•˜๋ฉด "hello"๊ฐ€ ์ถœ๋ ฅ๋ฉ๋‹ˆ๋‹ค.

node App.js

 

 

NPM(Node Package Manager)

  • ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์˜ ํŒจํ‚ค์ง€ ๊ด€๋ฆฌ์ž์ž…๋‹ˆ๋‹ค.
  • Node.js ์˜ ๊ธฐ๋ณธ ํŒจํ‚ค์ง€ ๊ด€๋ฆฌ์ž ์—ญํ• ์„ ํ•˜๋ฉฐ, ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๊ฐœ๋ฐœํ•  ๋•Œ ๋‹ค์–‘ํ•œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์™€ ๋„๊ตฌ๋ฅผ ์„ค์น˜ํ•˜๊ณ  ๊ด€๋ฆฌํ•˜๋„๋ก ๋„์™€์ค๋‹ˆ๋‹ค.

*NPM ์€ Node.js ์„ค์น˜ ์‹œ ์ž๋™์œผ๋กœ ์„ค์น˜๋ฉ๋‹ˆ๋‹ค.

 

NPM ์‹คํ–‰

์šฐ์„ , ํด๋”ํ•˜๋‚˜๋ฅผ ๋งŒ๋“ค๊ณ  ํ•ด๋‹น ๊ฒฝ๋กœ์—์„œ ์•„๋ž˜ ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค.

npm init -y

npm ์˜ ๊ฐ€์žฅ ๊ธฐ๋ณธ์ ์ธ ๊ตฌ์กฐ๋ฅผ ๋‹ด์€ package.json ํŒŒ์ผ์ด ์ƒ์„ฑ๋ฉ๋‹ˆ๋‹ค.

 

 

ํ•œ ๋งˆ๋””๋กœ, 

Node.js๋Š” ์„œ๋ฒ„ ์ธก ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ๋Ÿฐํƒ€์ž„ ํ™˜๊ฒฝ์ด๊ณ , NPM์€ ๊ทธ ํ™˜๊ฒฝ์—์„œ ์‚ฌ์šฉํ•˜๋Š” ํŒจํ‚ค์ง€ ๊ด€๋ฆฌ์ž๋‹ค.


NPM ๋ชจ๋“ˆ ์„ค์น˜ํ•˜๊ธฐ

npm install ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ
npm i ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ

์ง€์—ญ ์„ค์น˜

package.json ํŒŒ์ผ ์ƒ์„ฑ ํ›„ ํ”„๋กœ์ ํŠธ์—์„œ ์‚ฌ์šฉํ•  ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ๋ผ์ด๋ฒ„๋ฆฌ๋ฅผ ์„ค์น˜ํ•ฉ๋‹ˆ๋‹ค.

npm install ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ --save-prod
// --save-propd ์ƒ๋žต ๊ฐ€๋Šฅ

 

NPM ์œผ๋กœ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๊ฐ€ ์„ค์น˜๋˜๋ฉด node_modules ํด๋”๊ฐ€ ์ƒ์„ฑ๋ฉ๋‹ˆ๋‹ค.

 

๊ฐœ๋ฐœ์šฉ / ๋ฐฐํฌ์šฉ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ NPM ์„ค์น˜ ์˜ต์…˜ 

NPM ์„ ์ง€์—ญ์œผ๋กœ ์„ค์น˜ํ•  ๋•Œ ํ•ด๋‹น ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๊ฐ€ ๊ฐœ๋ฐœ์šฉ์ธ์ง€ ๋ฐฐํฌ์šฉ์ธ์ง€ ๊ตฌ๋ถ„ํ•˜์—ฌ ์„ค์น˜ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

 

  • ๋ฐฐํฌ์šฉ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์„ค์น˜ ์˜ต์…˜
    • --save-prod / ์ƒ๋žต ๊ฐ€๋Šฅ
    • ํ™”๋ฉด ๋กœ์ง๊ณผ ์ง์ ‘์ ์œผ๋กœ ๊ด€๋ จ๋œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ(ex: jquery)
npm install ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ --save-prod
// npm install ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์™€ ๋™์ผ

๋ฐฐํฌ์šฉ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์„ค์น˜ ์‹œ package.json ์˜ dependencies ์— ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๊ฐ€ ๋“ฑ๋ก๋ฉ๋‹ˆ๋‹ค.

 

๋ฐฐํฌ์šฉ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๊ฐ€ ์„ค์น˜๋˜๋ฉด ๋‹ค์Œ ๋ช…๋ น์–ด๋กœ ๋นŒ๋“œํ•˜๋ฉด ์ตœ์ข… ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ฝ”๋“œ ์•ˆ์— ํฌํ•จ๋ฉ๋‹ˆ๋‹ค.

npm run build

 

  • ๊ฐœ๋ฐœ์šฉ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์„ค์น˜ ์˜ต์…˜
    • --save-dev / -D
npm install ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ --save-dev
// npm install jquery -D

๊ฐœ๋ฐœ์šฉ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์„ค์น˜ ์‹œ package.json์˜ devDependencies ์— ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๊ฐ€ ๋“ฑ๋ก๋ฉ๋‹ˆ๋‹ค.

 

๊ฐœ๋ฐœ์šฉ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์„ค์น˜์˜ ๊ฒฝ์šฐ ๋นŒ๋“œ ์‹œ์— ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ฝ”๋“œ์—์„œ๋Š” ๋น ์ง€๊ฒŒ ๋˜๋ฏ€๋กœ,

์ตœ์ข… ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์— ํฌํ•จ๋˜์–ด์•ผ ํ•˜๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋Š” --save-prod(์ƒ๋žต๊ฐ€๋Šฅ) ์˜ต์…˜์„ ์‚ฌ์šฉํ•˜์—ฌ ์„ค์น˜ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

 

์ „์—ญ ์„ค์น˜

npm install ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ --global
npm inatall ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ -g

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

 

์ „์—ญ ์„ค์น˜ ๊ฒฝ๋กœ

์‹œ์Šคํ…œ ๋ ˆ๋ฒจ์— ์„ค์น˜๋œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋Š” ๋ฐ˜๋“œ์‹œ ๋‹ค์Œ ๊ฒฝ๋กœ์— ์„ค์น˜๋ฉ๋‹ˆ๋‹ค.

// Mac OS
/usr/local/lib/node_modules

// Window OS
%USERPROFILE%\AppData\Roaming\npm\node_modules

 

๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๊ฐ€ ์„ค์น˜๋˜๋ฉด ํ„ฐ๋ฏธ๋„์— ํ•ด๋‹น ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์ด๋ฆ„์„ ์ž…๋ ฅํ–ˆ์„ ๋•Œ ๋ช…๋ น์–ด๋ฅผ ์ธ์‹ํ•ฉ๋‹ˆ๋‹ค.

 

NPM ์ปค์Šคํ…€ ๋ช…๋ น์–ด

npm ์—์„œ ์ œ๊ณตํ•˜๋Š” ๊ฒƒ ์™ธ์— ์‚ฌ์šฉ์ž๊ฐ€ ์ง์ ‘ ์ •์˜ํ•œ ์ด๋ฆ„๊ณผ ๋™์ž‘์„ ์ˆ˜ํ–‰ํ•˜๋Š” ๋ช…๋ น์–ด์ž…๋‹ˆ๋‹ค.

npm run ๋ช…๋ น์–ด

 

์˜ˆ์‹œ) "hello world"๋ฅผ ์ถœ๋ ฅํ•˜๋Š” ๋ช…๋ น์–ด

 

๋‹ค๋ฅธ ์ปค์Šคํ…€ ๋ช…๋ น์–ด์™€์˜ ์กฐํ•ฉ๋„ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.

๋จผ์ € build ์— ์ •์˜ํ•œ react-scripts build ๋ช…๋ น์–ด๊ฐ€ ์‹คํ–‰๋œ ํ›„ delpoy ์˜ --mode production ๋ช…๋ น์–ด๊ฐ€ ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค.

 

์ฐธ๊ณ :
https://joshua1988.github.io/webpack-guide/build/node-npm.html