๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
๐Ÿ’ป Programming ๊ฐœ๋ฐœ

#0 ๊ฐœ๋ฐœํ™˜๊ฒฝ ์„ค์ •ํ•˜๊ธฐ - ํ…์ŠคํŠธ์—๋””ํ„ฐ, Git, Node.js, NPM

by kimdee 2019. 8. 25.
๋ฐ˜์‘ํ˜•

 

React๋Š” ๋ฌด์—‡์ธ๊ฐ€์š”?

React๋Š” ํŽ˜์ด์Šค๋ถ์ด ๋งŒ๋“  ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋กœ ์งง์€ ์‹œ๊ฐ„ ๋‚ด์— ์œ ๋ช…์„ธ๋ฅผ ํ†กํ†กํžˆ ์–ป์€ ํ”„๋ ˆ์ž„์›Œํฌ์ž…๋‹ˆ๋‹ค. ์ง€๋‚œ 3๋…„๊ฐ„์˜ ์กฐ์‚ฌ์— ๋”ฐ๋ฅด๋ฉด Angular์™€ Vue.js๋ณด๋‹ค ๋” ๋†’์€ ๋งŒ์กฑ๋„๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค. 2019๋…„ ๋ง์—๋Š” ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ํ”„๋ ˆ์ž„์›Œํฌ ์ค‘์—์„œ ๊ฐ€์žฅ ์‚ฌ์šฉ์ž๊ฐ€ ๋งŽ์€ ํ”„๋ ˆ์ž„์›Œํฌ๊ฐ€ ๋  ๊ฒƒ์ด๋ผ ์˜ˆ์ƒ๋œ๋‹ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค. 

 

HTML5, CSS, Javascript๊ฐ€ ์ต์ˆ™ํ•˜๋‹ค๋ฉด, ์š”์ฆ˜ ๋งŽ์€ ์ˆ˜์š”๊ฐ€ ์žˆ๋Š” React๋ฅผ ํ†ตํ•ด ์›น๊ฐœ๋ฐœ์„ ๋ฐฐ์›Œ๋ณด๋Š” ๊ฒƒ์ด ์–ด๋–จ๊นŒ์š”? ๋ฌผ๋ก  ์ €๋„ ๋ฐฐ์šฐ๋ฉด์„œ ์ด ๊ธ€์„ ์“ฐ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. 

 

 

๊ฐœ๋ฐœํ™˜๊ฒฝ ์„ค์ •ํ•˜๊ธฐ  ์†Œํ”„ํŠธ์›จ์–ด 

 

๊ฐœ๋ฐœ์„ ์‹œ์ž‘ํ•˜๊ธฐ์— ์•ž์„œ, ๊ฐœ๋ฐœํ™˜๊ฒฝ์„ ์„ค์ •ํ•ด๋ด…์‹œ๋‹ค. ํ•„์š”ํ•œ ์†Œํ”„ํŠธ์›จ์–ด๋Š” ์•„๋ž˜์™€ ๊ฐ™์Šต๋‹ˆ๋‹ค. 

 

1) ํ…์ŠคํŠธ ์—๋””ํ„ฐ ์„ค์น˜ํ•˜๊ธฐ

์ด๋ฏธ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๋Š” ์นœ์ˆ™ํ•œ ํ”„๋กœ๊ทธ๋žจ์„ ์‚ฌ์šฉํ•˜์‹œ๋ฉด ๋˜์ง€๋งŒ, ์ €๋Š” Visual Studio Code๋ฅผ ์„ ํ˜ธํ•ฉ๋‹ˆ๋‹ค. ํ…์ŠคํŠธ ์—๋””ํ„ฐ๋Š” ๊ทธ ์™ธ์— Braket์ด๋‚˜ Sublime Text๋„ ์žˆ์œผ๋‹ˆ ์›ํ•˜์‹œ๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ์‚ฌ์šฉํ•˜์‹œ๋ฉด ๋ฉ๋‹ˆ๋‹ค.

 

2) ์ปค๋งจ๋“œ ๋ผ์ธ ์‰˜ Command Line Shell 

์œˆ๋„์šฐ์—์„œ๋Š” cmd ์ฐฝ, Power Shell์„, ๋งฅ๊ณผ ๋ฆฌ๋ˆ…์Šค์—์„œ๋Š” ํ„ฐ๋ฏธ๋„ Terminal ์ฐฝ์„ ์‚ฌ์šฉํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค. Git์„ ์„ค์น˜ํ•  ๋•Œ ๊ฐ™์ด Git Bash๋ฅผ ์„ค์น˜ํ•˜์—ฌ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํ˜น์€ ํ…์ŠคํŠธ์—๋””ํ„ฐ๋กœ Visual Studio Code๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค๋ฉด ํ™•์žฅํ”„๋กœ๊ทธ๋žจ์— Terminal์ด ์žˆ๊ธฐ ๋•Œ๋ฌธ์—, ๋ฒˆ๊ฑฐ๋กญ๊ฒŒ ๋”ฐ๋กœ ์ฐฝ์„ ์—ด ํ•„์š” ์—†์ด, ํ…์ŠคํŠธ ์—๋””ํ„ฐ ๋‚ด์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ตœ์‹  ๋ฒ„์ „์—์„œ๋Š” Terminal์„ ์ž์ฒด์ ์œผ๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. (new!) 

 

3) ๋ธŒ๋ผ์šฐ์ € ์„ ํƒ

๋ชจ๋“  ๋ธŒ๋ผ์šฐ์ €์™€ ๋ฒ„์ „์ด HTML5๋ฅผ ์ง€์›ํ•˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ์ตœ์‹  ๋ฒ„์ „์˜ ํฌ๋กฌ์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์„ ๊ถŒ์žฅํ•ฉ๋‹ˆ๋‹ค. ์ €๋Š” ํ˜„์žฌ ํฌ๋กฌ v.76์„ ์“ฐ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. 

 

 

๊ฐœ๋ฐœํ™˜๊ฒฝ ์„ค์ •ํ•˜๊ธฐ  Git ์„ค์ •ํ•˜๊ธฐ 

Git์„ ์„ค์น˜ํ•ฉ๋‹ˆ๋‹ค. Git์˜ GUI ํˆด์„ ์‚ฌ์šฉํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด ์—ฌ๊ธฐ์—์„œ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ฐœ์ธ์ ์œผ๋กœ ์ถ”์ฒœ์„ ๋งŽ์ด ๋ฐ›์€ ํ”„๋กœ๊ทธ๋žจ์€ SourceTree์™€ Fork๋กœ, ๋‘˜์˜ ์ฐจ์ด์ ์„ ์•Œ๊ณ  ์‹ถ๋‹ค๋ฉด ์—ฌ๊ธฐ๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.

 

Git์˜ ์„ค์น˜๊ฐ€ ๋๋‚ฌ๋‹ค๋ฉด ์ตœ์ดˆ๋กœ ๊ณ„์ •์„ค์ •์„ ํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค.

 

1) ์ปค๋งจ๋“œ ์ฐฝ์„ ์—ด๊ณ  Git์ด ์ œ๋Œ€๋กœ ์„ค์น˜๋˜์—ˆ๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.

 

$ git --version

 

2) Git์—์„œ ์“ฐ์ผ ์ด๋ฆ„๊ณผ ๋ฉ”์ผ์ฃผ์†Œ๋ฅผ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค. 

 

$ git config --global user.name "์‚ฌ์šฉ์ž์ด๋ฆ„"
$ git config --global user.email ์‚ฌ์šฉ์ž๋ฉ”์ผ์ฃผ์†Œ

 

3) ์•„๋ž˜์—์„œ ์ œ๋Œ€๋กœ ์„ค์ •์ด ๋˜์—ˆ๋Š”์ง€ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. 

 

$ git config --list

 

--list ๋Œ€์‹  user.email, user.name๋“ฑ ํ‚ค๊ฐ’์„ ์ž…๋ ฅํ•ด๋„ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. 

 

๊ฐœ๋ฐœํ™˜๊ฒฝ ์„ค์ •ํ•˜๊ธฐ  Node.js์™€ NPM ์„ค์น˜ํ•˜๊ธฐ 

 

Node.js์™€ npm์„ ์„ค์น˜ํ•ฉ๋‹ˆ๋‹ค. Node.js๋Š” ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ๊ธฐ๋ฐ˜ ์„œ๋ฒ„ ํ”„๋ ˆ์ž„์›Œํฌ์ด๋ฉฐ, NPM์€ Node Package Manager์ž…๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์—์„œ ์„ค์น˜ํŒŒ์ผ์„ ๋‹ค์šด๋ฐ›์Šต๋‹ˆ๋‹ค. 

 

์ปค๋งจ๋“œ ์ฐฝ์—์„œ Node.js์™€ NPM์ด ์ œ๋Œ€๋กœ ์„ค์น˜๋˜์—ˆ๋Š”์ง€ ํ™•์ธํ•ด๋ด…๋‹ˆ๋‹ค. 

 

$ node -v
$ npm -v

 

๋ฒ„์ „์ด ์ œ๋Œ€๋กœ ๋œจ๋ฉด ์„ค์น˜๋œ ๊ฒƒ์ž…๋‹ˆ๋‹ค. 

 

 

 

๊ฐœ๋ฐœ์„ ์‹œ์ž‘ํ•˜๊ธฐ   

์ด์ œ ๊ฐœ๋ฐœ์„ ์‹œ์ž‘ํ•˜๋ ค๋Š” ํด๋”๋ฅผ ๋งŒ๋“ญ๋‹ˆ๋‹ค. ๊ฐ€๊ธ‰์  ์˜๋ฌธ์œผ๋กœ ๋œ ํด๋” ์ด๋ฆ„์„ ์‚ฌ์šฉํ•˜๊ธฐ๋ฅผ ๊ถŒ์žฅํ•ฉ๋‹ˆ๋‹ค.

 

1) ์ปค๋งจ๋“œ ์ฐฝ์ด๋‚˜, ํ˜น์€ Visual Studio Code ํ”„๋กœ๊ทธ๋žจ ๋‚ด ํ„ฐ๋ฏธ๋„์ฐฝ์—์„œ ํ•ด๋‹น ํ”„๋กœ์ ํŠธ ํด๋”๋กœ ์ด๋™ํ•˜๊ฑฐ๋‚˜ ์—ฝ๋‹ˆ๋‹ค. 

 

2) git์„ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค. 

 

$ git init 

 

์ปค๋งจ๋“œ์ฐฝ์— ์ž…๋ ฅํ•˜๋ฉด ๋นˆ Git Repository๋ฅผ ํ•ด๋‹น ๊ฒฝ๋กœ์— ์ดˆ๊ธฐํ™”๋˜์—ˆ๋‹ค๊ณ  ๋œน๋‹ˆ๋‹ค. 

 

3) npm์„ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค. 

 

$ npm init

 

๊ณ„์† ์—”ํ„ฐ๋ฅผ ๋ˆŒ๋Ÿฌ์ฃผ๋‹ค๋ณด๋ฉด Is this OK? (yes) ๊ฐ€ ๋‚˜์˜ต๋‹ˆ๋‹ค. ์—”ํ„ฐ๋ฅผ ๋ˆŒ๋Ÿฌ์ฃผ๋ฉด ๋ฉ๋‹ˆ๋‹ค.

ํ”„๋กœ์ ํŠธ ํด๋” ๋‚ด์— "package.json" ํŒŒ์ผ์ด ์ถ”๊ฐ€๋œ ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ํŒŒ์ผ์€ ํ”„๋กœ์ ํŠธ์˜ ์˜์กด์„ฑ์„ ๊ด€๋ฆฌํ•˜๋Š” ๋งค์šฐ ์ค‘์š”ํ•œ ํŒŒ์ผ์ž…๋‹ˆ๋‹ค. 

 

4) .gitignore ํŒŒ์ผ ์„ค์ •ํ•˜๊ธฐ

 

ํ…์ŠคํŠธ ์—๋””ํ„ฐ ๋‚ด์—์„œ ์ƒˆ ํŒŒ์ผ์„ ์ถ”๊ฐ€ํ•˜์—ฌ  .gitignore ํŒŒ์ผ์„ ๋งŒ๋“ค์–ด์ค๋‹ˆ๋‹ค. ์ค‘์š”ํ•œ ๊ฒƒ์€ ํŒŒ์ผ ์ด๋ฆ„์ด ์˜จ์ (.)์œผ๋กœ ์‹œ์ž‘ํ•œ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ".gitignore" ํŒŒ์ผ ๋‚ด์— node_modules๋ฅผ ์ ๊ณ  ์ €์žฅํ•ด์ค๋‹ˆ๋‹ค. 

 

node_modules

 

.gitignore ํŒŒ์ผ ๋‚ด์— ์ ํžŒ ํด๋”์™€ ํŒŒ์ผ์€ ์ปค๋ฐ‹์— ์ถ”๊ฐ€๋˜์ง€ ์•Š๊ณ , ์ €์žฅ์†Œ์— ์˜ฌ๋ผ๊ฐ€์ง€ ์•Š์Šต๋‹ˆ๋‹ค. 

 

 

5) React ์‚ฌ์šฉํ•˜๊ธฐ

 

$ npm install --save react react-dom

 

6) Babel ์‚ฌ์šฉํ•˜๊ธฐ

Babel์€ ์ฝ”๋“œ๋ฅผ ๋ณ€ํ™˜ํ•ด์ฃผ๋Š” ๊ฐœ๋ฐœ๋„๊ตฌ๋กœ, ES6+ ๋ฌธ๋ฒ•์œผ๋กœ ์ž‘์„ฑ๋œ ์ฝ”๋“œ๋ฅผ ๋ชจ๋“  ์›น๋ธŒ๋ผ์šฐ์ €์—์„œ ํ˜ธํ™˜์ด ๊ฐ€๋Šฅํ•˜๋„๋ก ํ•œ๋‹ค. 

๋•Œ๋ฌธ์— ์ง€๊ธˆ๋ถ€ํ„ฐ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋ฅผ ๊ณต๋ถ€ํ•œ๋‹ค๋ฉด ES5 ์ดํ•˜ ๋ฌธ๋ฒ•์„ ๊ณต๋ถ€ํ•˜๋Š” ๋ฐ ์—ด์„ ์˜ฌ๋ฆด ํ•„์š”๋Š” ์—†๋‹ค. ES6+ ๋ฌธ๋ฒ•์„ ๊ณต๋ถ€ํ•˜์ž. 

 

 

$ npm install --save-dev babel-preset-env babel-preset-react

 

ํ”„๋กœ์ ํŠธ ํด๋”์—์„œ  .babelrc  ํŒŒ์ผ์„ ๋งŒ๋“ค๊ณ  ํŒŒ์ผ ๋‚ด์— ์•„๋ž˜์™€ ๊ฐ™์ด ์ ์–ด ์ €์žฅํ•ฉ๋‹ˆ๋‹ค.

 

{ 
    "presets": [ "env" , "react" ] 
}

 

7) Parcel ์‹œ์ž‘ํ•˜๊ธฐ

 

$ npm install -g parcel-bundler

 

Parcel์˜ ์„ค์น˜๊ฐ€ ์™„๋ฃŒ๋˜๋ฉด  package.json  ํŒŒ์ผ์˜ NPM ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์ถ”๊ฐ€ํ•˜๋ฉด ํŽธ๋ฆฌํ•˜๊ฒŒ ์‚ฌ์šฉ์ด ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.

 

"scripts": {
    "start": "parcel index.html" 
}

 

๊ฐœ๋ฐœ์„œ๋ฒ„๋ฅผ ์—ด์–ด์ฃผ๋Š” ํŒŒ์…€ ๋ช…๋ น์–ด์ž…๋‹ˆ๋‹ค. ์œ„์™€ ๊ฐ™์ด ๋“ฑ๋กํ•œ ํ›„ 

 

$ npm start

 

์ด๋ ‡๊ฒŒ ์‚ฌ์šฉํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค. 

 

 

 


 

์—ฌ๊ธฐ๊นŒ์ง€ ํ™˜๊ฒฝ์„ค์ •์ด ๋๋‚ฌ์Šต๋‹ˆ๋‹ค. 

๋‹ค์Œ ๊ธ€์—์„œ๋Š” React๋ฅผ ํ™œ์šฉํ•ด ์‹ค์ œ๋กœ ๊ฐœ๋ฐœ์„ ์‹œ์ž‘ํ•ด๋ณด๋„๋ก ํ•ฉ์‹œ๋‹ค.

 

๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค.

 

 

 

 

---

 

(์™„๋ฃŒ!) + ์ฝ”๋“œ๋ฅผ ์ฃผ์„์œผ๋กœ ์‚ฝ์ž…ํ•ด์™”๋Š”๋ฐ, ํ‹ฐ์Šคํ† ๋ฆฌ ์—๋””ํ„ฐ์—์„œ ์ฝ”๋“œ๋กœ ์‚ฝ์ž…ํ•  ์ˆ˜ ์žˆ๋Š” ๋ถ€๋ถ„์ด ์žˆ์–ด์„œ ๋‹ค์Œ ๊ธ€์ด ์˜ฌ๋ผ์˜ค๊ธฐ ์ „๊นŒ์ง€ ์ˆ˜์ •ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. 

+ ์›นํŒฉ๊ณผ ํŒŒ์…€์— ๋Œ€ํ•œ ๋‚ด์šฉ์„ ํ•ด๋‹น ๊ธ€์— ์ถ”๊ฐ€ํ•˜๊ฑฐ๋‚˜, ๋‹ค์Œ ๊ธ€์— ๋”ฐ๋กœ ๋‹ค๋ฃจ๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. 

+ ์„ค๋ช…์˜ ์˜ˆ์‹œ๊ฐ€ ๋˜๋Š” ์ด๋ฏธ์ง€ ํŒŒ์ผ์„ ์ถ”ํ›„ ์ถ”๊ฐ€ํ•˜๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. 

๋ฐ˜์‘ํ˜•

๋Œ“๊ธ€