Curl Up Black Cat

๋ฐœ๋‹จ

React ํ”„๋กœ์ ํŠธ์— ์‚ฌ์šฉํ•˜๋ ค๊ณ  ์„ ํƒํ•œ html ํ…œํ”Œ๋ฆฟ์— ์Šคํƒ€์ผ์„ ์‚ดํŽด๋ณด๋‹ˆ ์ผ๋ฐ˜ css ์™€ sass 2๊ฐ€์ง€ ํ˜•ํƒœ๋กœ ์ง€์›ํ•˜์˜€๋‹ค.

sass๋กœ ์ ์šฉํ•˜๊ณ  ์‹ถ์–ด ๋ณ„๋„์˜ loader๋ฅผ ์„ค์น˜ ํ•œ ์ดํ›„ ๋นŒ๋“œ ํ•˜๋‹ˆ๊น ์ปดํŒŒ์ผ ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ•˜์˜€๋‹ค.

(typescript ํŒจํ‚ค์ง€ @types/node-sass ๊ฐ€ node-sass ํŒจํ‚ค์ง€๋ฅผ ์˜์กดํ•˜์—ฌ ๊ฐ™์ด ์„ค์น˜)

$ yarn add node-sass @types/node-sass

 

์›์ธ

node-sass ๋ฒ„์ „ ์ถฉ๋Œ ์ด์Šˆ

์„ค์น˜๋œ ํŒจํ‚ค์ง€์˜ ๋ฒ„์ „์„ ์‚ดํŽด๋ณด๋‹ˆ sass ๋Š” 6๋ฒ„์ „, @types sass ๋Š” 4๋ฒ„์ „์ด ์„ค์น˜๋˜์–ด์žˆ๋‹ค.

@type node-sass ํŒจํ‚ค์ง€๊ฐ€ node-sass 4.x.x, 5.x.x ๋ฒ„์ „๊นŒ์ง€๋งŒ ํ˜ธํ™˜๋˜๋Š” ๊ฒƒ์œผ๋กœ ๋ณด์ธ๋‹ค.

 

stackoverflow: https://stackoverflow.com/questions/64625050/error-node-sass-version-5-0-0-is-incompatible-with-4-0-0

 

Error: Node Sass version 5.0.0 is incompatible with ^4.0.0

I've created a blank React project, using the command: npx create-react-app on npm v7.0.7 and Node v15.0.1 Installed: React v17.0.1, node-sass v5.0.0, Then I tried to import blank .scss file to App

stackoverflow.com

 

ํ•ด๊ฒฐ

์„ค์น˜๋œ ํŒจํ‚ค์ง€๋ฅผ ์‚ญ์ œํ•˜๊ณ  ๋ฒ„์ „์„ ์ง€์ •ํ•˜์—ฌ ์„ค์น˜

$ yarn add node-sass@4.14.0 @types/node-sass@4.11.2

์ถœ์ฒ˜: https://reactrouter.com/web/guides/quick-start

๋ฆฌ์•กํŠธ ๋ผ์šฐํ„ฐ๋Š” ๋ฆฌ์•กํŠธ์˜ ํ™”๋ฉด ์ „ํ™˜์„ ๋„์™€์ฃผ๋Š” ์—ญํ• ์„ ํ•œ๋‹ค. ์ผ๋ฐ˜์ ์ธ ์›น์—์„œ a ํƒœ๊ทธ๋ฅผ ์ด์šฉํ•ด ๋‹ค๋ฅธ ํŽ˜์ด์ง€๋กœ ์ด๋™ํ–ˆ์—ˆ๋‹ค๋ฉด, ๋ฆฌ์•กํŠธ์—์„œ๋Š” React-Router๋ฅผ ํ†ตํ•ด Link ์ปดํ”„๋„ŒํŠธ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํ™”๋ฉด์„ ์ „ํ™˜ํ•œ๋‹ค. ๋ฆฌ์•กํŠธ๋Š” ๋ณ€ํ™”๊ฐ€ ์žˆ๋Š” ์ปดํฌ๋„ŒํŠธ๋งŒ ์—…๋ฐ์ดํŠธํ•˜์—ฌ ํšจ์œจ์ ์œผ๋กœ ์„ฑ๋Šฅ์„ ๊ด€๋ฆฌํ•˜๋Š” ๊ตฌ์กฐ๋กœ ํŽ˜์ด์ง€ ์ด๋™ ์‹œ ๊ตณ์ด ํ™”๋ฉด ์ „์ฒด๋ฅผ ์ƒˆ๋กœ ๊ณ ์นจ ํ•  ํ•„์š”๊ฐ€ ์—†๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

 

a ํƒœ๊ทธ๋ฅผ ์‚ฌ์šฉํ•  ๊ฒฝ์šฐ ํŽ˜์ด์ง€๋ฅผ ์•„์˜ˆ ์ƒˆ๋กœ ๋ถˆ๋Ÿฌ์˜ค๊ฒŒ ๋˜๋ฏ€๋กœ ๋ฆฌ์•กํŠธ ์•ฑ์ด ์ง€๋‹ˆ๊ณ  ์žˆ๋Š” ์ƒํƒœ๋“ค๋„ ๋ชจ๋‘ ์ดˆ๊ธฐํ™”๋˜๊ณ  ํŽ˜์ด์ง€๊ฐ€ ์ƒˆ๋กœ ๋ Œ๋”๋ง ๋œ๋‹ค.

๋ฆฌ์•กํŠธ์—์„œ๋Š” SPA ํŠน์ง•์„ ์ž˜ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด React Router๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค.

์ถœ์ฒ˜: https://create-react-app.dev/

Create React App ์ด๋ž€?

create-react-app ์€ ํŽ˜์ด์Šค๋ถ์—์„œ ๋งŒ๋“  react ์›น ๊ฐœ๋ฐœ์šฉ boilerplate์ž…๋‹ˆ๋‹ค. react๋Š” es6 ๋ฒ„์ „์˜ javascript๋กœ ์ž‘์„ฑํ•˜๋Š” ๊ฒƒ์ด ์ผ๋ฐ˜ํ™”๋˜์–ด์žˆ๊ธฐ ๋•Œ๋ฌธ์— webpack์ด๋ผ๋Š” ๋ชจ๋“ˆ ๋ฒˆ๋“ค๋Ÿฌ๋กœ ์ปดํŒŒ์ผ ๋ฐ ๋นŒ๋“œ ํ•˜๋Š” ๊ฒƒ์ด ํ•„์ˆ˜๋ผ ์ด ํ™˜๊ฒฝ์„ ์„ธํŒ…ํ•ด ์ค˜์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ง์ ‘ ๋ชจ๋“  ๊ฐœ๋ฐœ ํ™˜๊ฒฝ์„ ์„ค์ •ํ•˜์ง€ ์•Š์•„๋„ ํŽ˜์ด์Šค๋ถ์ด๋ผ๋Š” ๊ฑฐ๋Œ€ํ•œ ๊ธฐ์—…์—์„œ ์ง€์†์ ์œผ๋กœ ์—…๋ฐ์ดํŠธ๋ฅผ ํ•ด์ฃผ๊ณ  ์žˆ๊ณ  ์‰ฝ๊ฒŒ ํ”„๋กœ์ ํŠธ ๊ธฐ๋ณธ ํ™˜๊ฒฝ์„ ๊ตฌ์ถ•ํ•  ์ˆ˜ ์žˆ์–ด์„œ ๋งŽ์€ ์‚ฌ๋žŒ๋“ค์ด ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. 

 

์„ค์น˜

- js

yarn create react-app my-app

- typescript

yarn create react-app my-app --template typescript

 

์ถœ์ฒ˜: https://webpack.js.org/

Webpack ์ด๋ž€?

์›นํŒฉ(webpack) ์€ ์›น์—์„œ ์‚ฌ์šฉ๋˜๋Š” ๋ชจ๋“  ์ž์›(assets) ์„ ๋ฒˆ๋“ค๋ง ํ•ด์ฃผ๋Š” ๋„๊ตฌ์ž…๋‹ˆ๋‹ค. ๋ฒˆ๋“ค๋ง์˜ ๊ฐœ๋…์€ ์—ฌ๋Ÿฌ๊ฐœ ์˜ ํŒŒ์ผ ์ค‘์— ์ข…์†์„ฑ์ด ์กด์žฌํ•˜๋Š” ํŒŒ์ผ์„ ํ•˜๋‚˜์˜ ํŒŒ์ผ๋กœ ๋ฌถ์–ด ํŒจํ‚ค์ง•์„ ์‹œํ‚ค๋Š” ๊ณผ์ •์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. ์›นํŒฉ์„ ์‚ฌ์šฉํ•˜๋ฉด ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ๊ฐ„์˜ ์ข…์†์„ฑ ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ๋‚ด์—์„œ ํ•„์š”ํ•œ css๋‚˜ img์™€ ๊ฐ™์€ ํŒŒ์ผ(.css, .jpg)๋„ ๋ฒˆ๋“ค๋ง ํ•ด์„œ ํ•˜๋‚˜์˜ ํŒŒ์ผ๋กœ ํ•ฉ์ณ์ค˜์„œ ๋„คํŠธ์›Œํฌ ์š”์ฒญ์„ ์ตœ์†Œํ™”์‹œํ‚ฌ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 

์›นํŒฉ์€ ๋…ธ๋“œ ๋ชจ๋“ˆ ์ค‘์— ํ•˜๋‚˜์ž…๋‹ˆ๋‹ค. ์›นํŒฉ์„ ์‚ฌ์šฉํ•˜๋ ค๋ฉด Node.js ๊ฐ€ ์„ค์น˜๋˜์–ด ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

 

์„ค์น˜

yarn add webpack

 

 

์ถœ์ฒ˜: https://www.ryadel.com/en/yarn-vs-npm-pnpm-2019/

NPM ์ด๋ž€?

NPM ์€ Node Packaged Manager์˜ ์•ฝ์ž์ž…๋‹ˆ๋‹ค. ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ํŒจํ‚ค์ง€ ๋งค๋‹ˆ์ €์ด๊ณ  Node.js์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๋ชจ๋“ˆ๋“ค์„ ํŒจํ‚ค์ง€ํ™”ํ•˜์—ฌ ๋ชจ์•„๋‘” ์ €์žฅ์†Œ ์—ญํ• ์„ ํ•˜๋ฉฐ ์„ค์น˜/๊ด€๋ฆฌ๋ฅผ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ๋Š” CLI๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

 

Yarn ์ด๋ž€?

Yarn ๋„ ์—ญ์‹œ ํ”„๋กœ์ ํŠธ ๊ด€๋ฆฌ์ž ์—ญํ• ์„ ํ•˜๋Š” ํŒจํ‚ค์ง€ ๊ด€๋ฆฌ์ž์ž…๋‹ˆ๋‹ค. ํŽ˜์ด์Šค๋ถ์—์„œ ๋งŒ๋“  ๊ฒƒ์œผ๋กœ npm ์„œ๋ฒ„์— ๋น„ํ•ด ์†๋„๊ฐ€ ๋น ๋ฅด๊ณ  npm ๊ณผ ์‚ฌ์šฉ๋ฒ•์ด ๋น„์Šทํ•ฉ๋‹ˆ๋‹ค. 

 

Reference: https://javascript.plainenglish.io/npm-vs-yarn-choosing-the-right-package-manager-a5f04256a93f

 

npm vs Yarnโ€Š—โ€ŠChoosing the right package manager

Choose the right package manager for your project

javascript.plainenglish.io

 

npm vs Yarn ๋ช…๋ น์–ด

์ถœ์ฒ˜: https://www.digitalocean.com/community/tutorials/nodejs-npm-yarn-cheatsheet

 

package manager (package-lock.json, yarn.lock)

๋ฆฌ์•กํŠธ๋กœ ํ”„๋กœ์ ํŠธ๋ฅผ ๊ฐœ๋ฐœํ•˜๋ฉฐ ์ž์ฃผ ๋ณผ ์ˆ˜ ์žˆ๋Š” npm ์„ ์ด์šฉํ•˜๋ฉด package-lock.json, yarn ์„ ์‚ฌ์šฉํ•˜๋ฉด yarn.lock ํŒŒ์ผ์€ ์™œ ์ž๋™์œผ๋กœ ์ƒ์„ฑ๋˜๋Š” ๊ฑธ๊นŒ์š”?

 

ํŒจํ‚ค์ง€ ๊ด€๋ฆฌ๋ฅผ ์œ„ํ•ด npm์„ ์‚ฌ์šฉํ•˜๋“  yarn์„ ์‚ฌ์šฉํ•˜๋“  ํ•ด๋‹น ํ”„๋กœ์ ํŠธ์˜ ๋ฉ”ํƒ€ ์ •๋ณด๋Š” package.json ํŒŒ์ผ์„ ํ†ตํ•ด ๊ด€๋ฆฌ๊ฐ€ ๋ฉ๋‹ˆ๋‹ค. ์ด package.json ํŒŒ์ผ์—๋Š” ํ•ด๋‹น ํ”„๋กœ์ ํŠธ๊ฐ€ ์˜์กดํ•˜๊ณ  ์žˆ๋Š” ๋ชจ๋“  ํŒจํ‚ค์ง€ ์ด๋ฆ„๊ณผ ๋ฒ„์ „์ด ๋‚˜์—ด๋˜์–ด ์žˆ๋Š”๋ฐ์š”.

์ผ๋ฐ˜์ ์œผ๋กœ ์“ฐ์ด๋Š” ํŒจํ‚ค์ง€๋“ค์€ dependencies ํ•ญ๋ชฉ์— ๋ช…์‹œ๋˜๊ณ  ๊ฐœ๋ฐœํ•  ๋•Œ๋งŒ ํ•„์š”ํ•œ ํŒจํ‚ค์ง€๋“ค์€ devDependencies ํ•ญ๋ชฉ์— ๋ช…์‹œ๋ฉ๋‹ˆ๋‹ค.

 

๊ฐœ๋ฐœ์ž๊ฐ€ ์—ฌ๋ ค ๋ช…์ด ์žˆ๋Š” ๊ฐœ๋ฐœํŒ€์—์„œ ํ”„๋กœ์ ํŠธ์— ํˆฌ์ž…๋˜๋Š” ์‹œ๊ฐ„์ด ๋‹ค๋ฅด๋‹ค๋ฉด ๊ฐ๊ฐ ์‚ฌ์šฉํ•˜๋Š” ์„ค์น˜ ๋ฒ„์ „์ด ๋‹ค๋ฅผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋งŒ์•ฝ ์ด๋ ‡๊ฒŒ ๋œ๋‹ค๋ฉด ๊ฐœ๋ฐœ์ž A๋Š” ์ œ๋Œ€๋กœ ์ž‘๋™ํ•˜์ง€๋งŒ ๊ฐœ๋ฐœ์ž B์—๊ฒŒ์„œ๋Š” ์ž‘๋™์ด ์•ˆ ๋˜๋Š” ์ด์Šˆ๊ฐ€ ๋ฐœ์ƒ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Ÿฐ ์ƒํ™ฉ์€ ํŒจํ‚ค์ง€ ๋งค๋‹ˆ์ €์—๊ฒŒ ํŒจํ‚ค์ง€ ์ž ๊ธˆ์ด ์ง€์›๋˜์ง€ ์•Š๋˜ ์‹œ์ ˆ์— ๋งค์šฐ ๊ณจ์นซ๊ฑฐ๋ฆฌ์˜€๋˜ ๋ฌธ์ œ์˜€์œผ๋ฉฐ ์ด๊ฒƒ์„ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•œ ํŒจํ‚ค์ง€ ์ž ๊ธˆ์ด ํ•„์š”ํ•œ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

 

package-lock.json์ด๋‚˜ yarn.lock ๊ณผ ๊ฐ™์€ ํŒจํ‚ค์ง€ ์ž ๊ธˆ ํŒŒ์ผ์—๋Š” ํ”„๋กœ์ ํŠธ์— ํŒจํ‚ค์ง€์— ์ตœ์ดˆ๋กœ ์ถ”๊ฐ€๋  ๋‹น์‹œ์— ๋ฒ„์ „์ด ๊ธฐ๋ก๋ฉ๋‹ˆ๋‹ค. ํ•จ๊ป˜ ๊ฐœ๋ฐœํ•˜๋Š” ํ”„๋กœ์ ํŠธ์—์„œ ํŒจํ‚ค์ง€ ์ž ๊ธˆ ์—ญํ• ์€ ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค. ์ตœ์ดˆ์— setup ํ•˜๋Š” ๊ฐœ๋ฐœ์ž๊ฐ€ git์— ํŒจํ‚ค์ง€ ์ž ๊ธˆ ํŒŒ์ผ์„ ๋ฐ˜๋“œ์‹œ ์˜ฌ๋ ค์„œ ๋‹ค๋ฅธ ๊ฐœ๋ฐœ์ž๋“ค์ด ํŒจํ‚ค์ง€๊ฐ€ ๊ผฌ์ด์ง€ ์•Š๋„๋ก ์‹ ๊ฒฝ ์จ์•ผ ํ•ฉ๋‹ˆ๋‹ค.

 

 

 

+ Recent posts