๐Ÿ“ŒLanguage/JavaScript

TIL) ํŒจํ‚ค์ง€ ๋งค๋‹ˆ์ €, ํ™ˆ๋ธŒ๋ฅ˜Homebrew, JavaScript ๋Ÿฐํƒ€์ž„, Node.js, nvm๊ณผ npm, package.json ์ œ๋Œ€๋กœ ์•Œ๊ธฐ, npm script

hellohailie 2022. 5. 10. 01:17

 

CLI ์—๋””ํ„ฐ ์ข…๋ฅ˜

vim(vi), emacs, nano, VScode ๋“ฑ๋“ฑ

 

๐Ÿ‘‡CLI ํ™˜๊ฒฝ์—์„œ hello.js๋ฅผ VScode๋กœ ์—ฌ๋Š” ๋ฐฉ๋ฒ• ๐Ÿ‘‡

code hello.js

 

๐Ÿ‘‡ํ…์ŠคํŠธ ์—๋””ํ„ฐ nano๋ฅผ ์‹คํ–‰ํ•˜๋Š” ๋ฐฉ๋ฒ•๐Ÿ‘‡

nano hello.js  # hello.js ๋ฅผ nano์—์„œ ์—ฝ๋‹ˆ๋‹ค.
nano # ๊ทธ๋ƒฅ ์‹คํ–‰ํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.

 

 


ํŒจํ‚ค์ง€ ์•ˆ์—๋Š” ํ•˜๋‚˜์˜ ํ”„๋กœ๊ทธ๋žจ์ด ์ •์ƒ์ ์œผ๋กœ ์„ค์น˜๋˜๊ณ  ๋™์ž‘ํ•˜๊ธฐ ์œ„ํ•œ ๋ชจ๋“  ํŒŒ์ผ์ด ์••์ถ•๋˜์–ด ์žˆ๋‹ค.

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

ex)

๋ฆฌ๋ˆ…์Šค์˜ ํŒจํ‚ค์ง€ ๋งค๋‹ˆ์ € => apt,

macOS์˜ ํŒจํ‚ค์ง€ ๋งค๋‹ˆ์ € => brew

node.js ์ƒํƒœ๊ณ„์˜ ํŒจํ‚ค์ง€ ๋งค๋‹ˆ์ € => npm 

 

 

ํ™ˆ๋ธŒ๋ฅ˜Homebrew๋Š” ๋งฅOSmacOS ์šฉ ํŒจํ‚ค์ง€ ๋งค๋‹ˆ์ง€ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด๋‹ค.

 

 


brew ๋ช…๋ น์–ด 

  • brew ์ž์ฒด ์—…๋ฐ์ดํŠธ: brew update
  • ์—…๋ฐ์ดํŠธ ํ•„์š”ํ•œ ํŒŒ์ผ ์กฐํšŒ: brew outdated
  • ํ”„๋กœ๊ทธ๋žจ ์—…๊ทธ๋ ˆ์ด๋“œ(์—…๋ฐ์ดํŠธ): brew upgrade ํ”„๋กœ๊ทธ๋žจ ์ด๋ฆ„
  • ํ”„๋กœ๊ทธ๋žจ ๊ฒ€์ƒ‰: brew search ๊ฒ€์ƒ‰์–ด
  • ํ”„๋กœ๊ทธ๋žจ ์ •๋ณด ํ™•์ธ: brew info ํ”„๋กœ๊ทธ๋žจ ์ด๋ฆ„
  • ํ”„๋กœ๊ทธ๋žจ ์„ค์น˜: brew install ํ”„๋กœ๊ทธ๋žจ ์ด๋ฆ„
  • ํ”„๋กœ๊ทธ๋žจ ์‚ญ์ œ: brew uninstall ํ”„๋กœ๊ทธ๋žจ ์ด๋ฆ„
  • ์„ค์น˜๋œ ํ”„๋กœ๊ทธ๋žจ ๋ณด๊ธฐ: brew list

Homebrew ๋กœ ์„ค์น˜ํ•  ์ˆ˜ ์žˆ๋Š” ์œ ์šฉํ•œ ํ”„๋กœ๊ทธ๋žจ => wget (URL์„ ํ†ตํ•ด ํŒŒ์ผ์„ ๋‹ค์šด๋กœ๋“œํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ)

 

 

* ๊ฐœ๋ฐœ์ž๋Š” ํ„ฐ๋ฏธ๋„ ๋ฉ”์‹œ์ง€๋ฅผ ์ฃผ์˜ ๊นŠ๊ฒŒ ๋ณด๋Š” ์Šต๊ด€์„ ๊ฐ€์ง€๋Š” ๊ฒƒ์ด ์ข‹๋‹ค. ์—๋Ÿฌ ๋ฉ”์‹œ์ง€ ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ํ„ฐ๋ฏธ๋„์— ์ถœ๋ ฅ๋œ ๋ชจ๋“  ๋ฉ”์‹œ์ง€์— ์ง‘์ค‘ํ•˜๋Š” ์Šต๊ด€์„ ๊ฐ€์ง€๊ธฐ!

 

 


๋Ÿฐํƒ€์ž„์ด๋ž€?

ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด๊ฐ€ ๊ตฌ๋™๋˜๋Š” ํ™˜๊ฒฝ, ์ฆ‰ ์–ด๋–ค ํ”„๋กœ๊ทธ๋žจ์ด ๋™์ž‘ํ•  ๋•Œ, ํ”„๋กœ๊ทธ๋žจ์ด ๋™์ž‘ํ•˜๋Š” ๊ณณ

 

JavaScript ๋Ÿฐํƒ€์ž„ : ํฌ๋กฌ, ์‚ฌํŒŒ๋ฆฌ์™€ ๊ฐ™์€ ์›น ๋ธŒ๋ผ์šฐ์ €, Node.js

 

nvm(Node Version Manager)= Node.js์˜ ๋‹ค์–‘ํ•œ ๋ฒ„์ „์„ ๊ด€๋ฆฌํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ (Node.js์˜ ๋‹ค์–‘ํ•œ ๋ฒ„์ „์„ ์‰ฝ๊ฒŒ ์„ค์น˜ํ•  ์ˆ˜ ์žˆ๋‹ค. )

npm(Node Package Manager) = ํ•„์š”ํ•œ ๋ชจ๋“ˆ์„ ๋‹ค์šด๋กœ๋“œํ•  ์ˆ˜ ์žˆ๋Š”, ๋ชจ๋“ˆ๋“ค์ด ๋ชจ์—ฌ์žˆ๋Š” ๋ชจ๋“ˆ ์Šคํ† ์–ด

 

  • ์„ค์น˜ ํ›„ ์ •์ƒ์ ์œผ๋กœ ์„ค์น˜๊ฐ€ ์™„๋ฃŒ๋˜์—ˆ๋Š”์ง€ ํ™•์ธํ•˜๋Š” ๋ฐฉ๋ฒ• => version ๋ฌผ์–ด๋ณด๊ธฐ
  • Node.js๋กœ JavaScript ํŒŒ์ผ ์‹คํ–‰ํ•˜๊ธฐ => node <file_name> ๋ช…๋ น์–ด๋ฅผ ํ”„๋กฌํ”„ํŠธ์— ์ž…๋ ฅํ•˜๊ธฐ
nano helloWorld.js # helloWorld.js๋ผ๋Š” ์ด๋ฆ„์˜ ํŒŒ์ผ์„ ํ…์ŠคํŠธ ์—๋””ํ„ฐ nano๋กœ ์—ด๊ธฐ
  • ์„ค์น˜ํ•œ Node.js๋ฅผ ์—…๊ทธ๋ ˆ์ด๋“œํ•˜๊ธฐ ๐Ÿ‘‡
nvm install 12.18.3 #๋ฒ„์ „ ๋„˜๋ฒ„

 

 

 


  • ๋‚จ์ด ๋งŒ๋“ค์–ด๋†“์€ ๋ชจ๋“ˆ์„ node.js ์—์„œ๋Š” npm ๋ชจ๋“ˆ์ด๋ผ๋Š” ์ด๋ฆ„์œผ๋กœ ๋ถ€๋ฅด๋ฉฐ, ์ด์— ๋Œ€ํ•œ ์ •๋ณด๋ฅผ ๋‹ด์•„๋‘” ๊ณณ์ด package.json ์ด๋‹ค.

 

  • npm(Node Package Manager) = ํ•„์š”ํ•œ ๋ชจ๋“ˆ์„ ๋‹ค์šด๋กœ๋“œํ•  ์ˆ˜ ์žˆ๋Š”, ๋ชจ๋“ˆ๋“ค์ด ๋ชจ์—ฌ์žˆ๋Š” ๋ชจ๋“ˆ ์Šคํ† ์–ด

 

<์ •๋ฆฌ>

๋ฆฌ๋ˆ…์Šค์˜ ํŒจํ‚ค์ง€ ๋งค๋‹ˆ์ € => apt,

macOS์˜ ํŒจํ‚ค์ง€ ๋งค๋‹ˆ์ € => brew

node.js ์ƒํƒœ๊ณ„์˜ ํŒจํ‚ค์ง€ ๋งค๋‹ˆ์ € => npm 

 

 

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

package.json์˜  devDependencies

[์ฐธ๊ณ ]JSON ํ˜•์‹์—์„œ, ํ‚ค์— ์ ํžŒ ๊ฒƒ์€ ๋ชจ๋“ˆ ์ด๋ฆ„์ž…๋‹ˆ๋‹ค. ๊ฐ’์€ ๋ฒ„์ „์ด๋‹ค.

 

  • npm install์„ ์ด์šฉํ•˜๋ฉด, npm์— ์žˆ๋Š” ๋ชจ๋“ˆ์„ ์„ค์น˜ํ•  ์ˆ˜ ์žˆ๋Š”๋ฐ, ์ด๋•Œ --save-dev ์˜ต์…˜๊ณผ ํ•จ๊ป˜ ์„ค์น˜ํ•˜๋ฉด, ์ž๋™์œผ๋กœ devDependencies์— ์ถ”๊ฐ€๋œ๋‹ค.
$ npm install mocha --save-dev

 

  • package.json์˜ dependencies๋Š” ํ”„๋กœ์ ํŠธ๊ฐ€ ๋Œ์•„๊ฐ€๊ธฐ ์œ„ํ•ด ๋ฐ˜๋“œ์‹œ ํ•„์š”ํ•œ ๋ชจ๋“ˆ๋“ค์ด ๋ฌด์—‡์ธ์ง€๊ฐ€ ์ ํ˜€ ์žˆ๋‹ค. 

์ด ํ”„๋กœ์ ํŠธ์—์„œ๋Š” React๋ผ๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๋‹ค.

 

  • --save ์˜ต์…˜๊ณผ ํ•จ๊ป˜ ์„ค์น˜ํ•˜๋ฉด, ์ž๋™์œผ๋กœ dependencies์— ์ถ”๊ฐ€๋œ๋‹ค. --save ์˜ต์…˜์€ ์ƒ๋žตํ•ด๋„ ok.
$ npm install react
or
$ npm install --save react

 

 

์šฐ๋ฆฌ๊ฐ€ ํ”ํžˆ ํ•˜๋Š” npm install์€ package.json์— ์žˆ๋Š” dependency (์˜์กด์„ฑ ๋ชจ๋“ˆ)๋ฅผ ๋ฐ”ํƒ•์œผ๋กœ ์„ค์น˜ํ•œ๋‹ค. 


๋งŒ์•ฝ dependency ์ •๋ณด๋ฅผ ์ ์ง€ ์•Š์•˜๋‹ค๋ฉด => ์ฝ”๋“œ์—์„œ๋Š” ํ•ด๋‹น ๋ชจ๋“ˆ์„ ์“ฐ๊ณ  ์žˆ์ง€๋งŒ, ๋ฌด์—‡์„ ์„ค์น˜ํ•ด์•ผ ์ด ํ”„๋กœ๊ทธ๋žจ์ด ์ž‘๋™๋˜๋Š”์ง€, ๋ฌด์—‡์„ ์„ค์น˜ํ•ด์•ผ ์ด ํ”„๋กœ๊ทธ๋žจ์„ ๊ฐœ๋ฐœํ•  ์ˆ˜ ์žˆ์„์ง€ ์•Œ ์ˆ˜๊ฐ€ ์—†์„ ๊ฒƒ์ด๋‹ค.

 

 

  • scripts ํ•ญ๋ชฉ์€ CLI์—์„œ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ๋ช…๋ น์„ ๊ธฐ์ˆ ํ•œ๋‹ค. (npm script) / CLI์—์„œ ์‹คํ–‰ํ•  ๋•Œ์—๋Š” "npm run <์Šคํฌ๋ฆฝํŠธ ์ด๋ฆ„>" ์œผ๋กœ ์‹คํ–‰

 


<ํ•ต์‹ฌ ์ •๋ฆฌ>

 


์„ค์น˜ ์ค‘ ๋ฌด์–ธ๊ฐ€ ์ž˜๋ชป๋˜๊ณ  ์žˆ๋‹ค๊ณ  ๋Š๊ปด์ง€๋Š” ๊ฒฝ์šฐ

๋„ˆ๋ฌด ์‹œ๊ฐ„์ด ์˜ค๋ž˜ ๊ฑธ๋ฆฌ๊ฑฐ๋‚˜, ๋ญ”๊ฐ€ ๊ณผ์ • ์ค‘์— ์˜ˆ์ƒ์น˜ ๋ชปํ•˜๊ฒŒ ๋ฉˆ์ถฐ์žˆ๋Š” ๊ฒฝ์šฐ

๊ฐ•์ œ ์ข…๋ฃŒ์˜ ๋ฐฉ๋ฒ• => Ctrl + C ํ‚ค // ์ž‘์—…์„ ์ทจ์†Œํ•˜๊ณ , ํ„ฐ๋ฏธ๋„์˜ ์‚ฌ์šฉ์ž ์ž…๋ ฅ์„ ๋‹ค์‹œ ๋˜์ฐพ์•„์˜ค๋Š” ์—ญํ• ์„ ํ•œ๋‹ค.