React
์๋ฐ์คํฌ๋ฆฝํธ UI ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ก ๋ค์๊ณผ ๊ฐ์ ํน์ง๋ค์ ๊ฐ์ง๊ณ ์๋ค.
- ๊ฐ์ DOM์ ํตํด ํจ์จ์ ์ผ๋ก ๋ ๋๋ง์ด ๊ฐ๋ฅ
- ์ปดํฌ๋ํธ ๊ธฐ๋ฐ์ ์ฌ์ฌ์ฉ ๊ฐ๋ฅํ UI๋ฅผ ๊ฐ์ง
- ๋จ๋ฐฉํฅ ๋ฐ์ดํฐ ๋ฐ์ธ๋ฉ
- JSX ๋ฌธ๋ฒ์ผ๋ก ์ง๊ด์ ์ธ UI ์์ฑ
- SPA(Single Page Application) ๊ฐ๋ฐ ์ง์
React๋ฅผ ์ฌ์ฉํ๋ ์ด์
vanila Javascript (์์ Javascript)๋ ์ฝ๋์ ์ ํด์ง ๊ท๊ฒฉ(๋ณ์ ์ ์ธ, ๋ค์ด๋ฐ, ํจ์ ์ ์ธ ๋ฑ)์ด ์๊ธฐ ๋๋ฌธ์ ์ผ๊ด์ฑ์ด ๋จ์ด์ ธ ์๋ก์ ์ฝ๋์ ์ ์ํ๊ธฐ ์ด๋ ค์ธ ์ ์๋ค. ํ์ง๋ง ๋ฆฌ์กํธ์์๋ ์ปดํฌ๋ํธ ๊ตฌ์กฐ, ๋ค์ด๋ฐ ๊ท์น, ํ์ผ ๊ตฌ์กฐ, ์ํ ๊ด๋ฆฌ ๋ฐฉ์ ๋ฑ ์ผ๊ด๋ ๊ท์น์ ์ ์ฉํ ์ ์๊ธฐ ๋๋ฌธ์ ๊ฐ๋ ์ฑ, ์ ์ง๋ณด์์ฑ์ ํฅ์์ํฌ ์ ์๋ค.
๋ฆฌ์กํธ๋ SPA(๋จ์ผ ํ์ด์ง ์ ํ๋ฆฌ์ผ์ด์ )์ผ๋ก ํ์ด์ง ๋ก๋ฉ ์ ์ด๊ธฐ์ ํ์ํ ๋ชจ๋ ๋ฆฌ์์ค๋ค์ ๋ก๋ํ๊ณ , ์ดํ ์๋ก์ด ์ฝํ ์ธ ๋ ๋์ ์ผ๋ก ๋ก๋ํด ์ ์ฒด ํ์ด์ง๋ฅผ ์๋ก๊ณ ์นจํ์ง ์๊ณ ์ํธ ์์ฉ์ด ๊ฐ๋ฅํ๊ฒ ํด ์ฌ๋ฌ ํ์ด์ง ๊ฐ์ ๋ด๋น๊ฒ์ด์ ์ ๋ถ๋๋ฝ๊ฒ ๋ง๋ค์๋ค.
vanila Javascript๋ ์ค์ DOM์ ์กฐ์ํด ์์ ํ๊ธฐ ๋๋ฌธ์ ๋ณ๊ฒฝ ์ฌํญ์ด ์๊ธธ ์ ์ ์ฒด ํ์ด์ง๋ฅผ ๋ค์ ๋ ๋๋งํ๊ธฐ ๋๋ฌธ์ ์ฝ๋๊ฐ ๋ง์์ง์๋ก ๋ฌด๊ฑฐ์์ง๋ค. ๋ฆฌ์กํธ๋ ์ปดํฌ๋ํธ์ ์ํ๊ฐ ๋ณ๊ฒฝ๋ ๋ ๊ฐ์์ DOM(์ค์ DOM์ ๊ฒฝ๋ํ๋ ๋ณต์ ๋ณธ)์ ๋จผ์ ๋ณ๊ฒฝ ์ฌํญ์ ๋ฐ์ํ๊ณ , ์ค์ DOM์๋ ํ์ ๋ณ๊ฒฝ ์ฌํญ๋ง ์ ์ฉํ๊ธฐ ๋๋ฌธ์ ์ฑ๋ฅ์ ์ต์ ํํ ์ ์๋ค.
Node.js
๋ธ๋ผ์ฐ์ ๋ฐ์์ ์๋ฐ์คํฌ๋ฆฝํธ ์์ง์ ๊บผ๋ด์ ์ฐ๊ฒ ํด์ฃผ๋ Javascript Runtime Environmenet์ด๋ค.
์ฆ ๋ธ๋ผ์ฐ์ ๋ฅผ ํค์ง ์์๋ ์๋ฐ์คํฌ๋ฆฝํธ๋ฅผ ์ปดํจํฐ์์ ์ํํ ์ ์์ด ์๋ฒ๋ ์๋ฐ์คํฌ๋ฆฝํธ๋ก ์์ฑํ ์ ์๊ฒ ๋์๋ค.
node.js ์ค์น ๋ฐฉ๋ฒ์๋ ํํ์ด์ง์์ ์ง์ ๋ค์ด๋ก๋ ๋ฐ๋ ๋ฐฉ๋ฒ๋ ์์ง๋ง, nvm์ ํตํด ์ฌ๋ฌ ๋ฒ์ ์ ์ฌ์ฉํ ์ ์๋๋ก ๊ด๋ฆฌํ๋ ๊ฒ์ ๊ถ์ฅํ๋ค๊ณ ํ๋ค. node ๋ฒ์ ์ฐจ์ด๋ก ์ธํด ์ด๋ค ๊ธฐ๊ธฐ์์๋ ์ ์์ ์ผ๋ก, ์ด๋ค ๊ธฐ๊ธฐ์์๋ ์ค๋ฅ๊ฐ ๋ ์๋ ์๋๋ฐ, ๊ทธ๋ด ๋ ๋ฒ์ ์ ๋ง์ถฐ์ผ ํ๊ธฐ ๋๋ฌธ์ ์ ๊ฑฐ/์ฌ์ค์น๋ฅผ ๋ฐ๋ณตํ๋ ๊ฒฝ์ฐ๊ฐ ๋ง์์ง๋ฉด ๋ฒ๊ฑฐ๋ก์์ง๋ค. ๋๋ฌธ์ ์ ๊ฑฐ/์ฌ์ค์น์ ๊ณผ์ ์์ด nvm์ ์ค์นํด ํ์ํ ๋ ธ๋ ๋ฒ์ ์ ๊ทธ๋๊ทธ๋ ์ฌ์ฉํ ์ ์๊ธฐ ๋๋ฌธ์ด๋ค.
nvm์ผ๋ก ๋ค์ด๋ก๋
์ฐธ๊ณ ๋ก ์ ์ด๋ฏธ์ง๋๋ก ๋ฐ๋ผํ๋ฉด ์๋ ํ๋ฅ ์ด ๋๋ค (์ผ๋จ ๋ด๊ฐ ๊ทธ๋ฌ๋ค...)
์๋๋ฉด nvm์ด ์ค์น๊ฐ ์๋์์ ํ๋ฅ ๋ ๋๊ธฐ ๋๋ฌธ์ด๋ค. ์ ์ฒซ๋ฒ์งธ ๋ช ๋ น์ด๋ก๋ ์๋๋๋ผ
๊ทธ์ ์ ์์ ์ผ๋จ ๋จผ์ homebrew๊ฐ ์ค์น๋์ด์์ด์ผ ํ๋ค. homebrew ์ค์น๋ ์ฌ๊ธฐ์ ๋ค๋ค์๋ค
homebrew ๋ฒ์ ํ์ธ (ํน์๋ชจ๋ฅด๋๊น..)
brew -v
#Homebrew 4.4.27
homebrew๋ก nvm ์ค์น
- nvm ์ค์น
#homebrew๋ก nvm ์ค์น
brew install nvm
- nvm ํ๊ฒฝ๋ณ์ ์ค์
#nvm ํด๋ ์์ฑ
mkdir ~/.nvm
#zsh ํ๊ฒฝ๋ณ์ ํ์ผ ์ด๊ธฐ (์ฌ์ฉํ๋ ์์ ์ข
๋ฅ์ ๋ฐ๋ผ ๋ค๋ฅด๋ค๊ณ ํจ. .bashrc, .bash_profile, .zshenv ๋ฑ...)
vi ~/.zshrc
# .zshrc ๋ด์ฉ
export NVM_DIR=~/.nvm
source $(brew --prefix nvm)/nvm.sh
.zshrc ๋ด์ฉ์ ๊ฒฝ์ฐ์๋ ํ์ผ ์ด๊ธฐ๋ฅผ ํ์ ๊ฒฝ์ฐ vi ํ์์ ์๋ํฐ๊ฐ ์ด๋ฆฌ๋๋ฐ, ์๋ ๋ด์ฉ์ ์ ๋ ฅํ๊ณ :wq ๋ฅผ ์ ๋ ฅ ํ ์ํฐ๋ฅผ ๋๋ฅด๋ฉด ์ ์ฅ์ด ๋ ์ํ๋ก vi ์๋ํฐ์์ ๋๊ฐ ์ ์๋ค.
- ์ ์ฅํ ์ฝ๋๋ฅผ ์ ์ฉ
source ~/.zshrc
- nvm์ด ์ง์ง ์ค์น๋๋์ง ํ์ธ
nvm -v
#0.40.2
node ์ค์นํ๊ธฐ
๋๋ ๊ฐ์์์ ๋์จ๋๋ก v.20.19.0์ผ๋ก ์ค์นํ๋ค.
# Node.js ๋ค์ด๋ก๋ ๋ฐ ์ค์น:
nvm install 20
node๋ ์ง์ง ์ค์น๋์๋์ง ํ์ธํ๊ธฐ
node -v
#v20.19.0
nvm current
#v20.19.0
npm -v
#10.8.2
node์ ์ฌ๋ฌ ๋ฒ์ ํ์ธํด๋ณด๊ธฐ
#๋ชจ๋ ๋ฒ์ ํ์ธ
nvm ls-remote
LTS๋ ๊ฐ์ฅ ์์ ์ ์ด๊ธฐ ๋๋ฌธ์ ์ ๋ฒ์ ์ผ๋ก ๋ค์ด๋ก๋ ๋ฐ๊ธฐ๋ฅผ ์ถ์ฒํ๋ค๊ณ ํ๋ค.
์ด ๋ ๋ค๋ฅธ ๋ฒ์ ์ ์ฌ์ฉํ๊ณ ์ถ๋ค! ํ๋ฉด ์์์ ์ค์นํ ๊ฒ ์ฒ๋ผ nvm install ๋ฒ์ ๋ช ์ ์ฌ์ฉํ๋ฉด ๋๋ค.
#๋ค๋ฅธ ๋ฒ์ ์ค์นํด๋ณด๊ธฐ
nvm install v22.14.0
#๋ด๊ฐ ์ค์นํ ๋ฒ์ ๋ค ํ์ธํด๋ณด๊ธฐ
nvm ls
#๋ฒ์ ๋ฐ๊พธ๊ธฐ (์ด ๋ฒ์ ์ ์ฌ์ฉํ๊ฒ ๋ค๊ณ ์ ์ธ)
nvm use 20.19.0
๋ ธ๋ ์ฌ์ฉํด๋ณด๊ธฐ
ํฐ๋ฏธ๋์ node๋ฅผ ์ ๋ ฅํ ํ, ์ฝ๋๋ฅผ ์ ๋ ฅํด๋ณด๋ฉด ๋ธ๋ผ์ฐ์ ์ ์ฝ์์ฐฝ์ฒ๋ผ ์ ์คํ๋๋ ๊ฒ์ ๋ณผ ์ ์๋ค!
๋ ์ด์ visual studio code์์๋ ์คํํด๋ณผ ์ ์๋ค.
npm
Node Package Manager์ ์ฝ์ด๋ก, Javascript๋ก ๋ง๋ค์ด์ง ํจํค์ง๋ค์ ์ค์น, ๋ฐฐํฌ, ๊ด๋ฆฌํด์ฃผ๋ฉฐ, node.js๋ฅผ ์ค์นํ๋ฉด ๋์์ ์ค์น๋๋ค.
npm์ package.json ํ์ผ์ ํตํด ํจํค์ง ์์กด์ฑ๊ณผ ํ๋ก์ ํธ์ ์ ๋ณด๋ฅผ ๊ด๋ฆฌํ๋ค.
package.json ํ์ผ ์์ฑ
ํ๋ก์ ํธ์ root ๋๋ ํ ๋ฆฌ์์ ์๋ ๋ช ๋ น์ด์ค ํ๋๋ฅผ ์คํํ๋ฉด package.json ํ์ผ์ ์์ฑํ ์ ์๋ค.
๋๋ ๊ธฐ๋ณธ์ค์ ๊ฐ์ผ๋ก ์์ฑํ๊ธฐ ์ํด npm init -y๋ฅผ ์ ๋ ฅํ๋ค.
npm init
#๊ธฐ๋ณธ ์ค์ ๊ฐ
npm init -y
#or
npm init --yes
๊ทธ๋ฌ๋ฉด ์์ ๊ฐ์ package.json ํ์ผ์ด ์์ฑ๋์ด์๋๋ฐ, ํ์ผ ๋ด์ ๊ฐ๊ฐ์ ํค๊ฐ ๋ญ ์๋ฏธํ๋๋ฉด
- name
ํ๋ก์ ํธ์ ์ด๋ฆ
๋ฐฐํฌํ ๋ ๊ฒน์น๋ ์ด๋ฆ์ด๋ฉด ์๋๊ธฐ ๋๋ฌธ์ ๊ณ ์ ํ ์ด๋ฆ์ ์ง์ด์ฃผ๋๊ฒ ์ข์ผ๋ฉฐ,
url๋ก๋ ์ฌ์ฉ๋๊ณ ์ค์น ์ ๋๋ ํ ๋ฆฌ ์ด๋ฆ์ด ๋๊ธฐ ๋๋ฌธ์ url๊ณผ ๋๋ ํ ๋ฆฌ์์ ๋ชจ๋ ์ธ ์ ์๋ ์ด๋ฆ์ด์ด์ผ ํ๋ค.
node๋ js๊ฐ ์ด๋ฆ์ ๋ค์ด๊ฐ๋ฉด ์๋๋ฉฐ, ๋๋ฌธ์๋ฅผ ํฌํจํด์๋ ์๋๊ณ , _์ด๋ .๋ก ์์ํ ์ ์๋ค. - version
ํ๋ก์ ํธ์ ํ์ฌ ๋ฒ์
๋ฒ์ ์ ํญ์ ์ธ ์๋ฆฌ๋ก ์ด๋ฃจ์ด์ ธ ์๋๋ฐ, SemVer ๋ฐฉ์์ ๋ฒ์ ๋๋ฒ๋ง์ ๋ฐ๋ฅด๊ธฐ ๋๋ฌธ์ด๋ค.
๊ธฐ๋ณธ๊ฐ์ 1.0.0์ด์ง๋ง ํจ์น / ๋ง์ด๋ / ๋ฉ์ด์ ์ ๋ฐ์ดํธ๋ฅผ ํ๋ฉด์ ๋ฒ์ ์ ๋ฐ๊ฟ์ค ์ ์๋ค. - main
ํ๋ก์ ํธ์ ๋ฉ์ธ์ด ๋๋ ๋ชจ๋ ID
์ ์ด๋ฏธ์ง์ ๊ฒฝ์ฐ npm.js ๊ธฐ๋ฐ์ผ๋ก ๋์ - scripts
๋ช ๋ น์ด๋ฅผ ๋ฏธ๋ฆฌ ์์ฑํด๋๊ณ ๊ฐํธํ๊ฒ ๋ช ๋ น์ด๋ฅผ ์คํํ๋ ๋จ์ถ ๋ช ๋ น์ด์ ์งํฉ
npm run "์คํฌ๋ฆฝํธ"๋ก ์ฌ์ฉ์ด ๊ฐ๋ฅํ๋ค
ex) npm run test - keywords
ํ๋ก์ ํธ ๊ฒ์ ์ ์ฐธ์กฐ๋๋ ํค์๋ (npm search๋ก ๊ฒ์์ ๋ฆฌ์คํธ์ ํ์๋จ) - author
ํ๋ก์ ํธ ์์ฑ์ ์ ๋ณด๋ก ํ ์ฌ๋๋ง ์ง์ ํ๋ค.
"author": {
"name": "Your Name",
"email": "you@example.com",
"url": "http://your-website.com"
},
// ๋๋
"author": "Your Name <you@example.com> (http://your-website.com)"
- license
๋ฐฐํฌํ ํจํค์ง์ ์ ์๊ถ์ ๋ํ ์ ์
๊ฐ์ผ๋ก๋ ISC / MIT ๊ฐ ๋ง์ด ์ฐ์ธ๋ค.
ISC : ๋ฌด๋ฃ ์ฌ์ฉ / ๋ฌด๋ฃ ๋ณต์ฌ / ์ถ์ฒ ์์ด๋ ๊ฐ๋ฅ
MIT : ๋ฌด๋ฃ ์ฌ์ฉ / ๋ฌด๋ฃ ๋ณต์ฌ / ์ถ์ฒ ๋จ๊ฒจ์ผ๋จ - description
ํ๋ก์ ํธ ์ค๋ช
keywords์ฒ๋ผ npm search๋ก ๊ฒ์ ์ ๋ฆฌ์คํธ์ ํ์๋จ
npm ํจํค์ง ์ค์นํ๊ธฐ
npm์๋ ์๋ง์ ํจํค์ง๋ค์ด ์๊ณ ์ค์ ๋ก ๋ง์ด ์ฌ์ฉ๋๊ณคํ๋ค.
์ต๊ทผ ์ธ๊ธฐ์๋ npm์ค ๋ญ๊ฐ ๋ ์ฌ์ฉ๋๋์ง ๊ทธ ์ถ์ธ๋ฅผ ์์๋ณด๊ณ ์ถ๋ค๋ฉด npm trends๋ฅผ ์ฐธ๊ณ ํด์ ์ธ๊ธฐ์๋ npm๋ค์ ํ์ธํด๋ณผ ์ ์๋ค.
์ผ๋จ npm์ ์๋ ํจํค์ง๋ค์ ์ฌ์ฉํ๊ธฐ์ ์์ javascript ๋ชจ๋์ ์ฌ์ฉํ ๋ CommonJS (node.js์ ํ์ค)ํฌ๋งท๊ณผ ES6์ ๋ชจ๋ ์์คํ ์ ๋น๊ตํด๋ณผ ํ์๊ฐ ์๋ค.
CommonJs (node.js) | ES6 (๋ธ๋ผ์ฐ์ ํ๊ฒฝ) | |
๋ด๋ณด๋ด๊ธฐ | module.exports | export default |
๊ฐ์ ธ์ค๊ธฐ | require | import |
1. CommonJS
๊ฐ๋จํ๊ฒ ๊ณฑํ๊ธฐ ๊ฒฐ๊ณผ๋ฅผ ์ถ๋ ฅํ๊ฒ ํ๋ ๋ชจ๋ multiply.js์ ๊ตฌ๊ตฌ๋จ 2๋จ์ ๊ฒฐ๊ณผ๋ฅผ ๋์ถํ two.js๋ฅผ ์์ฑํ๋ค.
multiply.js
const multiply = (x,y) => console.log(`${x} x ${y} = ${x*y}`);
module.exports = multiply;
two.js
const multiply = require('./multiply.js');
multiply(2,3);
multiply(2,4);
multiply(2,5);
multiply(2,6);
/*
2 x 3 = 6
2 x 4 = 8
2 x 5 = 10
2 x 6 = 12
*/
2. ES6
multiple.js
const multiply = (x,y) => console.log(`${x} x ${y} = ${x*y}`);
export default multiply;
two.js
์ด ๋ ๋งจ์ import๋ฌธ์ ์์ฑํ ๋ from ๋ถ๋ถ์ from "./multiply" ์ผ๋ก ์๋์์ฑ์ด ๋ ์๋ ์๋๋ฐ, ๊ทธ๋ฅ ๋๋ฉด ์ค๋ฅ๊ฐ ๋ฐ์ํ๋ .js๋ฅผ ๋ค์ ๋ถ์ฌ ํ์คํ ๊ฒฝ๋ก๋ฅผ ์ ํด์ฃผ๋ ํธ์ด ์ข๋ค..
import multiply from "./multiply.js";
multiply(2,3);
multiply(2,4);
multiply(2,5);
multiply(2,6);
์ด๋ ๊ฒ ํ๋ฉด ์ค๋ฅ๋ ์๋ค๋ง ๊ฒฝ๊ณ ๋ฉ์์ง๊ฐ ๋จ๋๋ฐ,
ES6์ผ๋ก ๋ชจ๋ ์์คํ ์ ๋ง๋ค๊ณ ์ ํ ๋๋ package.json์์ ๋ค์๊ณผ ๊ฐ์ด "type" : "module" ์ ์ถ๊ฐํด์ฃผ๋๊ฒ ์ข๋ค.
package.json
{
"name": "250402",
"version": "1.0.0",
"main": "npm.js",
"type": "module",
// ์๋ต...
}
์ง์ง npm ํจํค์ง ์ค์นํ๊ธฐ
๋ ์ง๋ฅผ ๋ค๋ฃจ๋ ๋ฐ ๋์์ด ๋๋ Day.js๋ฅผ ๋จผ์ ์ค์นํด๋ณผ ๊ฒ์ด๋ค.
npm i dayjs
#i๋ install์ ์ฝ์ด
์ค์นํ๋ฉด ํด๋น ํจํค์ง์ ๋ชจ๋์ด ํ๋ก์ ํธ ํด๋์ ์ถ๊ฐ๋๊ณ ๋ด package.json์๋ ์ถ๊ฐ๊ฐ ๋๋ค.
์ด์ commonJs์ ES6์์ day.js๋ฅผ ๋ถ๋ฌ์์ ๊ฐ๋จํ๊ฒ ์ฌ์ฉํ๋ ๋ฐฉ์์ ์์๋ณผ ๊ฒ์ด๋ค.
1. CommonJs
day.js
const dayjs = require('dayjs');
const now = dayjs();
console.log(now.toString());
console.log(now.format());
console.log(now.format('YYYY-MM-DD')); // ์ฌ์ฉ์ ์ ์ ํ์
console.log(now.format('YYYY๋
MM์ DD์ผ')); // ํ๊ธ ํ์
const date1 = dayjs('2024-04-02');
const date2 = dayjs('2025-04-02');
console.log(date2.diff(date1, 'day'));// ์ผ ๋จ์ ์ฐจ์ด
console.log(date2.diff(date1, 'month'));
๊ฒฐ๊ณผ
2. ES6
์์ ์์ ํ ๊ฒ ์ฒ๋ผ package.json์ "type" : "module",์ ์ถ๊ฐํด์ค์ผ ํ๋ค.
day.js
import dayjs from "dayjs";
const now = dayjs();
console.log(now.toString());
console.log(now.format());
console.log(now.format('YYYY-MM-DD')); // ์ฌ์ฉ์ ์ ์ ํ์
console.log(now.format('YYYY๋
MM์ DD์ผ')); // ํ๊ธ ํ์
const date1 = dayjs('2024-04-02');
const date2 = dayjs('2025-04-02');
console.log(date2.diff(date1, 'day'));// ์ผ ๋จ์ ์ฐจ์ด
console.log(date2.diff(date1, 'month'));
์ด๋ฐ์์ผ๋ก ํจํค์ง๋ฅผ ์ฌ์ฉํด ๋ ๋ค๋ฅธ ํจํค์ง๋ฅผ ๋ง๋ค ์๋ ์๋๋ฐ, ์ด ๊ฒฝ์ฐ ํจํค์ง์ ๋ํ ์์กด์ฑ์ด ์๊ธด๋ค.
package-lock.json
์๊น day.js๋ฅผ ์ค์นํ ์ดํ๋ก package-lock.json์ด๋ผ๋ ํ์ผ์ด ์์ฑ๋๋๋ฐ,
package.json์ด ์ง๊ธ ํ๋ก์ ํธ์ ๊ธฐ๋ณธ ์ค์ ํ์ผ์ด๋ผ๋ฉด, package-lock.json์ ์ ํํ ๋ฒ์ ์ ์์กด์ฑ ๋ฐ ํ์ ์์กด์ฑ์ ๊ธฐ๋กํ๋ค.
์๋ฅผ ๋ค์ด์ next๋ฅผ ์ค์นํ์ ๋, package.json์๋ ๋ค์๊ณผ ๊ฐ์ด ์ถ๊ฐ๋๋ค.
๋ฐ๋ฉด package-lock.json์๋ ๋ค์๊ณผ ๊ฐ์ด ์ถ๊ฐ๋ ๊ฒ์ ๋ณผ ์ ์๋ค....
next์์ ๋ ์ฌ์ฉํ๋ ๋ค์ํ module๋ค์ด ์ถ๊ฐ๋ก ์ค์น๋์ด์๋ค. ์ด๋ next๊ฐ next ์์ฒด๋ฟ๋ง์ด ์๋ ๋ค๋ฅธ ํจํค์ง์๋ ์์กดํ์ฌ ๋ง๋ค์ด์ง ํจํค์ง์ด๊ธฐ ๋๋ฌธ์ด๋ค.
package-lock.json์๋ next๊ฐ ์์กดํ๊ณ ์๋ ๊ฐ๊ฐ์ ํจํค์ง๋ค์ด ์กฐ๊ธ์ด๋ผ๋ ์ด๊ธ๋๋ฉด ์คํ๋์ง ์์ ์ ์๊ธฐ ๋๋ฌธ์ ํ์ ์์กด์ฑ๋ ๊ธฐ๋กํ๊ณ ์๊ณ , ์ด๋ก ์ธํด ๋๊ตฌ๋ ๋์ผํ ํ๊ฒฝ์์ ์คํ์ด ๊ฐ๋ฅํด์ง๋ค.
next๋ฅผ ์ญ์ ํ๋ฉด 800์ค์ด ๋์ด๊ฐ๋ ํจํค์ง ๋ด์ญ๋ค์ด ์ฌ๋ผ์ง๋ ๊ฑธ ํ์ธํ ์ ์๋ค.
npx
Node Package eXecute์ ์ฝ์ด๋ก, npm ํจํค์ง๋ฅผ ์คํํ๋ ๋๊ตฌ๋ค. npm 5.2.0 ์ดํ๋ก ๋ฒ์ ์ ํฌํจ๋๋ค.
npx๊ฐ ํ์ํ ๊ฒฝ์ฐ
1. ํจํค์ง๋ฅผ ์ผํ์ฑ์ผ๋ก ์ฌ์ฉ ์
- npm : ํจํค์ง ๋ค์ด => ์ฌ์ฉ => ์ฌ์ฉ ํ ์ญ์
- npx : ํจํค์ง ์คํ
cowsay๋ ์ฌ๋ฏธ๋ฅผ ์ํด ์ฌ์ฉ๋๋ ํ๋ก๊ทธ๋จ์ผ๋ก, ์ฃผ๋ก ๋ฉ์์ง๋ฅผ ๊ฐ์กฐํ๊ฑฐ๋ ์ฌ๋ฏธ์๋ ํจ๊ณผ๋ฅผ ์ํด ํ์ฉ๋๋ค. ์ค์น์์ด๋ ์ฌ์ฉ์ด ๊ฐ๋ฅํ๋ค.
์๋์ ๊ฐ์ด npx cowsay hello๋ฅผ ๋ช ๋ นํด๋ดค๋ค.
์ด ๋ ์ฒ์์๋ need to install ~....ํ๋ผ๋ฉด์ ์ค์นํ๋ผ๋๊ฑฐ ์๋๊ฐ?? ์ถ์๋๋ฐ
์ด๋ ํจํค์ง๊ฐ ๋ก์ปฌ์ด๋ ๊ธ๋ก๋ฒ์ ์์ผ๋ฉด ๊ทธ๋ฅ ์์๋ก ๋ค์ด๋ก๋ ๋๋ ๊ฒ ๋ฟ์ด๋ฉฐ, ์๊ตฌ์ ์ด์ง ์๋ค. ํฐ๋ฏธ๋์ ๋ค์ ์ด ๊ฒฝ์ฐ ์ฌ๋ค์ด๋ก๋ ํด์ผํ๋ค. (package.json์ด๋ package-lock.json์ ์ถ๊ฐ๋๋ ๊ฒ์ฒ๋ผ ์ค์น๋๋ ๊ฒ์ด ์๋)
npx -y cowsay "hello"๋ -y๋ฅผ --yes๋ก ๋ณ๊ฒฝํด ์์ฑํ๋ฉด ์๋์ผ๋ก ์น์ธ๋ผ์ ์์ ๊ฐ์ ํ๋กฌํํธ๋ ๋จ์ง ์๋๋ค๊ณ ํ๋ค.
cowsay๋ฅผ npm์ผ๋ก ์ค์นํ๊ธฐ โฌ๏ธ
1. npm i cowsay๋ก ์ค์น
2-1. package.json์ scripts์ ํน์ ๊ตฌ๋ฌธ์ cowsay๋ผ๋ ๋ช ๋ น์ด๋ก ์ถ๊ฐํ ์คํ

2-2. scripts์ ์ถ๊ฐํ๋ ๊ฒ ๋ง๊ณ cowsay.js๋ฅผ ๋ฐ๋ก ์์ฑ (commonjs ์์ผ๋ก ์งํ)
//cowsay.js
const cowsay = require('cowsay');
console.log(
cowsay.say({
text: 'Hello...',
e: 'oO',
T: 'U'
})
);
2-2-1. ํฐ๋ฏธ๋์ node cowsay.js ๋ช ๋ น์ด ์ ๋ ฅ

2. ํ๋ก์ ํธ ํ๊ฒฝ ๊ตฌ์ถ ์
ํจํค์ง๋ฅผ npm์ผ๋ก ์ค์นํ๊ณ ์ฌ์ฉํ ๊ฒฝ์ฐ ๋ด๊ฐ ์ง์ ๋ฐ๊พธ์ง ์๋ ํ ๊ณ์ ๊ฐ์ ๋ฒ์ ์ด๋ค.
๊ทธ๋ฌ๋ npx๋ก ์คํ์ํค๋ฉด, ์คํ์ํฌ ๋ ๋ง๋ค ์ต์ ๋ฒ์ ์ ๋ถ๋ฌ์ค๊ธฐ ๋๋ฌธ์ ๋ฒ์ ์ ๋ํด ํฌ๊ฒ ์ ๊ฒฝ์ธ ํ์๊ฐ ์์ด์ง๋ค.
์๋ฅผ ๋ค์ด ๋ฆฌ์กํธ๋ฅผ npx๋ก ์คํํด๋ดค๋ค.
npx create -react-app react-app
๊ธฐ์กด ํด๋ npx-practice์ react-app ํ๋ก์ ํธ๊ฐ ์์ฑ๋ ๊ฑธ ํ์ธํ ์ ์๋ค.
react-app์ ๊ธฐ๋ณธ ๊ตฌ์กฐ๋ฅผ ์์ฑํ๋ ๋ฐ์๋ง 17500์ค์ด ๋์ด๊ฐ๋๋ฐ ์ด ํจํค์ง๋ฅผ ์ฃผ๊ธฐ์ ์ผ๋ก ๊ด๋ฆฌํด์ฃผ๊ธฐ๋ ์์์ ์ผ๋ก ๋ถ๊ฐ๋ฅํ๋ค.
๋๋ฌธ์ npx๋ฅผ ์ฌ์ฉํ๋ฉด ์ค์น ์์ด ์ต์ ๋ฒ์ ์ ์๋์ผ๋ก ๋ค์ดํด ์คํํ ์ ์๋ค.
nvm ์ค์น๋ 2์ด์ง๋์ ๋ธ๋ก๊ทธ๋ฅผ,
npm์ package.json ๊ด๋ จ ๋ด์ฉ์ ์ซ๋ฆฌ๋์ ๋ธ๋ก๊ทธ๋ฅผ ๋ง์ด ์ฐธ๊ณ ํ๋ค... ๊ฐ์ฌํฉ๋๋ค:)
'react' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
React / ์ํ๊ด๋ฆฌ (0) | 2025.04.04 |
---|---|
React / map, filter๋ก ๋ฐ๋ณต ๋ ๋๋งํ๊ธฐ (0) | 2025.04.03 |
React / JSX ๋ฌธ๋ฒ (0) | 2025.04.03 |
React / ์ปดํฌ๋ํธ (0) | 2025.04.03 |
React / ํ๋ก์ ํธ ์์ฑ (0) | 2025.04.03 |