์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋ฅผ ํ™œ์„ฑํ™” ํ•ด์ฃผ์„ธ์š”

d037 React Bootstrap Sass Typescript Bootstrap for Webstorm

 ·   ·  โ˜• 2 min read

frontend๋Š” jupyterlab ์ปค์Šคํ„ฐ๋งˆ์ด์ง• ์ดํ›„๋กœ ์ฒ˜์Œ์ž…๋‹ˆ๋‹ค. ์—ฐ์Šต์šฉ์œผ๋กœ ์‚ฌ์šฉํ•  ๋งŒํ•œ boilerplate์™€ ๊ฐ™์€ ํ”„๋กœ์ ํŠธ๊ฐ€ ํ•„์š”ํ•ด ์ž‘์„ฑํ•ด ๋ณด์•˜์Šต๋‹ˆ๋‹ค.

๊ณ„๊ธฐ

ํ•จ์ˆ˜๋ฅผ ๋งŒ๋“œ๋Š” ๊ฒƒ์ฒ˜๋Ÿผ ์›น ํŽ˜์ด์ง€๋ฅผ ์‰ฝ๊ฒŒ ๋งŒ๋“œ๋Š” ๋ฐฉ๋ฒ•์€ ์—†์„๊นŒ?

ํ•˜๋Š” ์•„์ด๋””์–ด์—์„œ ์‹œ์ž‘ํ•ด์„œ, ์˜์‹์˜ ํ๋ฆ„์— ๋”ฐ๋ผ,

  • ํ…œํ”Œ๋ฆฟ์“ธ๊นŒ?
  • ๊ทธ๋ƒฅ ํŽ˜์ด์ง€๋Š” ์žฌ๋ฏธ์—†์ž–์•„.
  • ๊ทธ๋Ÿผ react ํŽ˜์ด์ง€๋ฅผ ์‰ฝ๊ฒŒ ๋งŒ๋“œ๋Š” ๋ฐฉ๋ฒ•์€ ์—†์„๊นŒ?
    • ์–ด๋–ป๊ฒŒ?
    • ์–ด๋–ค React project template์ด ์žˆ๋‹ค๋ฉด, ๊ฑฐ๊ธฐ์— ํŽ˜์ด์ง€ include ํ•˜๋ฉด ์•ˆ๋ผ?

ํ•˜๋Š” ์ƒ๊ฐ์—์„œ, ํ…œํ”Œ๋ฆฟ์„ ๋งŒ๋“ค์–ด ๋ณด์•˜์Šต๋‹ˆ๋‹ค.

์™„์„ฑ๋œ ๋ชจ์Šต์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

d037_webstorm.png

์šฐ๋ฆฌ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์ผ์„ ํ•  ๊ฒ๋‹ˆ๋‹ค.

  1. npx create-react-app my-app –typescript
  2. cd my-app
  3. npm install –save typescript @types/node @types/react @types/react-dom @types/jest
  4. mv .\src\index.js .\src\index.tsx
  5. mv .\src\App.js .\src\App.tsx
  6. mv .\src\App.test.js .\src\App.test.tsx
  7. npm install –save bootstrap
  8. npm install node-sass –save
  9. mv .\src\App.css .\src\App.scss

nodejs ๊ฐ€ ์„ค์น˜๊ฐ€ ์•ˆ๋˜์–ด ์žˆ๋‚˜์š”?

์œˆ๋„์šฐ์ฆˆ ๊ฐœ๋ฐœํ™˜๊ฒฝ์ด๊ธฐ ๋•Œ๋ฌธ์— ๊ฐ„๋‹จํ•˜๊ฒŒ scoop์œผ๋กœ ์„ค์น˜ํ•ฉ๋‹ˆ๋‹ค.

scoop install nvm
nvm install latest
nvm use 14.13.1

sass ์„ค์น˜

์•„, SASS๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ๋•Œ๋ฌธ์— SASS ์ปค๋งจ๋“œ๊ฐ€ ์„ค์น˜๋˜์–ด ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
ํ† ์ดํ”„๋กœ์ ํŠธ์ด๊ณ , ์œˆ๋„์šฐ์ฆˆ ๊ฐœ๋ฐœํ™˜๊ฒฝ์ด๊ธฐ ๋•Œ๋ฌธ์— ๊ฐ„๋‹จํ•œ๊ฒŒ scoop์œผ๋กœ ์„ค์น˜ํ•ฉ๋‹ˆ๋‹ค.

scoop install sass
sass --version

sass์ปค๋งจ๋“œ๋Š” scss ํŒŒ์ผ์„ css๋กœ ๋ณ€ํ™˜ํ•˜๋Š” ํˆด? ์ปดํŒŒ์ผ๋Ÿฌ? ์ž…๋‹ˆ๋‹ค.

d037_sass.png

sass ๋ฌธ๋ฒ•์— ๋Œ€ํ•œ ์„ค๋ช…์€ ์ด ๋ฌธ์„œ์˜ ๋ชฉ์ ์—์„œ ๋ฒ—์–ด๋‚˜๋ฏ€๋กœ, ๊ธฐ์–ต์œผ๋กœ ์„ค๋ช…ํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒƒ๋งŒ ๊ฐ„๋‹จํžˆ๋งŒ ์–˜๊ธฐํ•˜๋ฉด

  • nested definition
  • ๋ณ€์ˆ˜ ์‚ฌ์šฉ๊ฐ€๋Šฅ
  • ์‚ฌ์น™์—ฐ์‚ฐ ์‚ฌ์šฉ๊ฐ€๋Šฅ

์ •๋„์ผ ๋“ฏ ํ•ฉ๋‹ˆ๋‹ค.

sass๋Š” webstorm์ด scssํŒŒ์ผ์„ ์—ด๋ฉด ์ž๋™์œผ๋กœ ์ปดํŒŒ์ผํ•˜๊ฒ ๋Š๋ƒ๋ฉฐ ๋ฌผ์–ด์˜ค๋Š”๋ฐ, ์ด๋•Œ sass์˜ path๋ฅผ ์•Œ๋ ค์ฃผ๋ฉด ๋ฉ๋‹ˆ๋‹ค.

troubleshoot

  • jsx ๋ฒ„์ „์˜ javascript๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ๋•Œ๋ฌธ์— typescript์™€ ํ˜ธํ™˜์ด ๋ฉ๋‹ˆ๋‹ค. ๊ทธ๋ ‡๊ธฐ ๋•Œ๋ฌธ์— .jsํŒŒ์ผ์„ tsx๋กœ ๋ณ€๊ฒฝํ•˜๋Š” ๊ฒƒ์œผ๋กœ typescript ์ฝ”๋“œ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • webstorm์—์„œ scssํŒŒ์ผ์ด ์ž๋™์œผ๋กœ css๋กœ ์ปดํŒŒ์ผ๋˜์ง€ ์•Š๋Š”๋‹ค๋ฉด, ๋ฌธ๋ฒ•์— ์˜ํ–ฅ์„ ์ฃผ์ง€ ์•Š๋Š” ๊ณณ์— ๊ณต๋ฐฑ๋ฌธ์ž๋ฅผ ๋„ฃ๊ณ  ์ €์žฅํ•ด์ฃผ๋ฉด ์ž๋™์œผ๋กœ cssํŒŒ์ผ์„ ์ปดํŒŒ์ผํ•ด ๋ƒ…๋‹ˆ๋‹ค.
  • sass๋ฒ„์ „์ด ๋งž์ง€ ์•Š๋Š”๋‹ค๋Š” ์—๋Ÿฌ๊ฐ€ ๋‚˜์˜ฌ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. react-bootstrap์ด ์•ฝ๊ฐ„ sass๋ฒ„์ „์ด ๋‚ฎ์„ ๋ฒ„์ „์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. package.json์— sass๋ฒ„์ „์ด 5.0.0์œผ๋กœ ๋˜์–ด ์žˆ๋‹ค๋ฉด, 4.0.0์œผ๋กœ ๋ณ€๊ฒฝํ•ด ์‚ฌ์šฉํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค.
  • App.tsx๋‚˜ index.tsxํŒŒ์ผ์—์„œ react๋ฌธ๋ฒ•์„ ์ธ์‹ํ•˜์ง€ ๋ชปํ•˜๋Š” ์—๋Ÿฌ๋ฅผ ๋‚ด๊ณ  ์žˆ๋‹ค๋ฉด, import * as React from 'react'๋ฅผ ๋„ฃ์–ด ์ฃผ๋ฉด ํ•ด๊ฒฐ๋ฉ๋‹ˆ๋‹ค.
storm .
npm run build
npm start

bootstrap

https://create-react-app.dev/docs/adding-bootstrap ์—์„œ ์„ค๋ช…ํ•˜๊ณ  ์žˆ๋Š” ๋‚ด์šฉ์ž…๋‹ˆ๋‹ค.

custom.scss๋ฅผ ๋งŒ๋“ค์–ด ๋‘๊ณ 

1
2
3
4
5
// Override default variables before the import
$body-bg: #000;

// Import Bootstrap and its default variables
@import '~bootstrap/scss/bootstrap.scss';

index.tsx์— ์ด๊ฒƒ์„ ๋„ฃ์Šต๋‹ˆ๋‹ค.

1
import './custom.scss';

๊ฒฐ๊ณผ

๊ฒฐ๊ณผํ™”๋ฉด์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

d037_browsing.png

ref

๊ณต์œ ํ•˜๊ธฐ

tkim
๊ธ€์“ด์ด
tkim
Software Engineer