[React] CRA(Create-React-App) ์—†์ด ๋ฆฌ์•กํŠธ ํ”„๋กœ์ ํŠธ ์„ธํŒ…ํ•˜๊ธฐ

2023. 1. 30. 21:13ยท react

1. ๋ฆฌ์•กํŠธ๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์‹ถ์€ ํ”„๋กœ์ ํŠธ์˜ ๋””๋ ‰ํ„ฐ๋ฆฌ์— ๋“ค์–ด๊ฐ„๋‹ค.

 

2. ์•„๋ž˜์˜ ๋ช…๋ น์–ด๋ฅผ ํ†ตํ•ด ๋…ธ๋“œ ํ”„๋กœ์ ํŠธ๋ฅผ ์ƒ์„ฑ-์ดˆ๊ธฐํ™” ํ•˜๋ฉฐ package.json์„ ๋งŒ๋“ ๋‹ค

npm init -y

 

3. JSX ์ปดํŒŒ์ผ์„ ์œ„ํ•œ Babel์„ ์„ค์น˜ํ•œ๋‹ค.

npm install --save-dev @babel/core babel-loader @babel/cli @babel/preset-env @babel/preset-react

babel-loader๋Š” ์›นํŒฉ๊ณผ ๊ฐ™์ด ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด ๋‹ค์šดํ•ด์ค€๋‹ค.

 

4. Webpack ์„ค์น˜

npm install --save-dev webpack webpack-cli webpack-dev-server

5. htmlWebpackPlugin ์„ค์น˜

npm install --save-dev html-webpack-plugin

6. react, react-dom ์„ค์น˜

npm install react react-dom 

7. ํ”„๋กœ์ ํŠธ ํด๋” ์•ˆ์— babel.lrcํŒŒ์ผ์„ ๋งŒ๋“ค๊ณ  ์•„๋ž˜ ์ฝ”๋“œ๋ฅผ ๋„ฃ์–ด์ค€๋‹ค.

{
    "presets": [
        "@babel/preset-env",
        ["@babel/preset-react", { "runtime": "automatic" }]
    ]
}

"runtime":"automatic" ์œผ๋กœ ๋ฐ”๊พผ๋‹ค. ์ตœ์‹  jsx-transform ๊ธฐ๋Šฅ์„ ์ด์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•œ ๊ฒƒ์ด๋‹ค. ์•„๋ž˜ ๋งํฌ ์ถ”๊ฐ€ ์„ค๋ช…

https://ko.reactjs.org/blog/2020/09/22/introducing-the-new-jsx-transform.html

 

Introducing the New JSX Transform โ€“ React Blog

Although React 17 doesnโ€™t contain new features, it will provide support for a new version of the JSX transform. In this post, we will describe what it is and how to try it. Whatโ€™s a JSX Transform? Browsers donโ€™t understand JSX out of the box, so most

ko.reactjs.org

 

8. webpack.config.jsํŒŒ์ผ์„ ํ”„๋กœ์ ํŠธ ํด๋” ๋‚ด์— ๋งŒ๋“ค๊ณ  ์•„๋ž˜์™€ ๊ฐ™์ด ์ถ”๊ฐ€ํ•œ๋‹ค.

const HtmlWebpackPlugin = require('html-webpack-plugin');
const path = require('path');

module.exports = {
  entry: './index.js',
  mode: 'development',
  output: {
    path: path.resolve(__dirname, './dist'),
    filename: 'index_bundle.js',
  },
  target: 'web',
  devServer: {
    port: '5000',
    static: {
      directory: path.join(__dirname, 'public')
},
    open: true,
    hot: true,
    liveReload: true,
  },
  resolve: {
    extensions: ['.js', '.jsx', '.json'],
  },
  module: {
    rules: [
      {
        test: /\.(js|jsx)$/, 
        exclude: /node_modules/, 
        use: 'babel-loader', 
      },
    ],
  },
  plugins: [
    new HtmlWebpackPlugin({
      template: path.join(__dirname, 'public', 'index.html')
    })
  ]
};

9. package.json์— ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ถ”๊ฐ€ํ•œ๋‹ค.

  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1",
    "start": "webpack-dev-server .",
    "build": "webpack ."
  },

10. file loader ์„ค์น˜ ํ›„ webpack.config.js์— ์•„๋ž˜์˜ ์„ค์ •์„ ์ถ”๊ฐ€ํ•œ๋‹ค.

{
        test: /\.(png|jpe?g|gif|svg|webp)$/,
        use: ["file-loader"],
      },

11. css loader/style loader ์„ค์น˜ํ›„ webpack.config.js ์— ์•„๋ž˜์˜ ์„ค์ •์„ ์ถ”๊ฐ€ํ•œ๋‹ค.

$ npm install --save-dev style-loader css-loader
module.exports = {
  module: {
    rules: [
      // CSS ํŒŒ์ผ ๋กœ๋” ์„ค์ •
      {
        test: /\.css$/i,
        use: ['style-loader', 'css-loader']
      }
    ]
  }
}

'react' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

[React] ๋ฐฐ์—ด ๋ Œ๋”๋ง ์‹œ ์ฃผ์˜์‚ฌํ•ญ  (0) 2023.07.08
[๋ฆฌ์•กํŠธ๋ฅผ ๋„๋Œ€์ฒด ์™œ ์“ฐ๋Š”๊ฐ€!] React ์“ฐ๋Š” ์ด์œ  ์ „๋ถ€ ์•Œ์•„๋ณด๊ธฐ  (0) 2023.07.06
[๋ฆฌ์•กํŠธ ์ œ๋กœ์ดˆ ๊ฐ•์˜ ์ •๋ฆฌ0] ๋‚ด๊ฐ€ ์ œ๋กœ์ดˆ ๋ฆฌ์•กํŠธ ๊ฐ•์˜๋ฅผ ์„ ํƒํ•œ ์ด์œ   (1) 2023.07.06
[React] Create-React-App ํ”„๋กœ์ ํŠธ ์„ธํŒ…ํ•˜๋Š” ๋ฐฉ๋ฒ•  (0) 2023.03.29
[react] github pages๋กœ ํ”„๋กœ์ ํŠธ deployํ•˜๊ธฐ!!  (0) 2023.02.27
'react' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€
  • [๋ฆฌ์•กํŠธ๋ฅผ ๋„๋Œ€์ฒด ์™œ ์“ฐ๋Š”๊ฐ€!] React ์“ฐ๋Š” ์ด์œ  ์ „๋ถ€ ์•Œ์•„๋ณด๊ธฐ
  • [๋ฆฌ์•กํŠธ ์ œ๋กœ์ดˆ ๊ฐ•์˜ ์ •๋ฆฌ0] ๋‚ด๊ฐ€ ์ œ๋กœ์ดˆ ๋ฆฌ์•กํŠธ ๊ฐ•์˜๋ฅผ ์„ ํƒํ•œ ์ด์œ 
  • [React] Create-React-App ํ”„๋กœ์ ํŠธ ์„ธํŒ…ํ•˜๋Š” ๋ฐฉ๋ฒ•
  • [react] github pages๋กœ ํ”„๋กœ์ ํŠธ deployํ•˜๊ธฐ!!
๊น€ํƒœ์ง„
๊น€ํƒœ์ง„
์„ฑ์žฅํ•˜๊ธฐ ์œ„ํ•œ ๊ธ€์„ ์ž‘์„ฑํ•˜๋ ค๊ณ  ๋…ธ๋ ฅ์ค‘ ์ž…๋‹ˆ๋‹ค
๊น€ํƒœ์ง„
My Dev History๐Ÿ’ป
๊น€ํƒœ์ง„
์ „์ฒด
์˜ค๋Š˜
์–ด์ œ
  • ๋ถ„๋ฅ˜ ์ „์ฒด๋ณด๊ธฐ (131)
    • ํŒŒ์ด์ฌ (8)
    • ์•Œ๊ณ ๋ฆฌ์ฆ˜ (24)
    • ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ (13)
      • ํ”„๋กœ์ ํŠธ (6)
      • ์ด๋ก  (6)
    • html&css (3)
    • css (6)
    • TIL (6)
    • react (15)
    • ํšŒ๊ณ  (5)
      • ์ฃผ๊ฐ„ํšŒ๊ณ  (2)
    • ๊ฐ•์˜ ์ •๋ฆฌ (3)
      • ์ฝ”๋“œ์ž‡ ๋ฆฌ์•กํŠธ ๊ฐ•์˜ ๋ชจ์Œ (3)
    • ์˜ค๋ฅ˜๋กœ๊ทธ (4)
    • ํ”„๋กœ์ ํŠธ (15)
    • ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ (2)
    • Computer Science (4)
      • ๋จธ์‹ ๋Ÿฌ๋‹ (3)
      • ์ปดํ“จํ„ฐ๋„คํŠธ์›Œํฌ (1)
    • ์˜คํ”ˆ์†Œ์Šค (3)
    • ์›น (1)
    • ์ฝ”๋“œ๊ฐœ์„  (1)

๋ธ”๋กœ๊ทธ ๋ฉ”๋‰ด

  • ํ™ˆ
  • ํƒœ๊ทธ
  • ๋ฐฉ๋ช…๋ก

๊ณต์ง€์‚ฌํ•ญ

์ธ๊ธฐ ๊ธ€

ํƒœ๊ทธ

  • redux
  • ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ
  • ์˜คํ”ˆ์†Œ์Šค ๊ธฐ์—ฌ
  • react
  • ์˜คํ”ˆ์†Œ์Šค
  • react icons
  • Object
  • CSS
  • css property
  • ๊ฒŒ์ž„
  • ํ”„๋ก ํŠธ์—”๋“œ
  • Recoil
  • ์ƒ์†
  • ๊ณต์‹๋ฌธ์„œ
  • ๋ฆฌ์•กํŠธ
  • white-space
  • ๊ฐœ๋ฐœ์ž
  • Flappy game
  • game
  • initial value
  • javascript
  • prototype
  • canvas api

์ตœ๊ทผ ๋Œ“๊ธ€

์ตœ๊ทผ ๊ธ€

hELLO ยท Designed By ์ •์ƒ์šฐ.v4.2.2
๊น€ํƒœ์ง„
[React] CRA(Create-React-App) ์—†์ด ๋ฆฌ์•กํŠธ ํ”„๋กœ์ ํŠธ ์„ธํŒ…ํ•˜๊ธฐ
์ƒ๋‹จ์œผ๋กœ

ํ‹ฐ์Šคํ† ๋ฆฌํˆด๋ฐ”

๋‹จ์ถ•ํ‚ค

๋‚ด ๋ธ”๋กœ๊ทธ

๋‚ด ๋ธ”๋กœ๊ทธ - ๊ด€๋ฆฌ์ž ํ™ˆ ์ „ํ™˜
Q
Q
์ƒˆ ๊ธ€ ์“ฐ๊ธฐ
W
W

๋ธ”๋กœ๊ทธ ๊ฒŒ์‹œ๊ธ€

๊ธ€ ์ˆ˜์ • (๊ถŒํ•œ ์žˆ๋Š” ๊ฒฝ์šฐ)
E
E
๋Œ“๊ธ€ ์˜์—ญ์œผ๋กœ ์ด๋™
C
C

๋ชจ๋“  ์˜์—ญ

์ด ํŽ˜์ด์ง€์˜ URL ๋ณต์‚ฌ
S
S
๋งจ ์œ„๋กœ ์ด๋™
T
T
ํ‹ฐ์Šคํ† ๋ฆฌ ํ™ˆ ์ด๋™
H
H
๋‹จ์ถ•ํ‚ค ์•ˆ๋‚ด
Shift + /
โ‡ง + /

* ๋‹จ์ถ•ํ‚ค๋Š” ํ•œ๊ธ€/์˜๋ฌธ ๋Œ€์†Œ๋ฌธ์ž๋กœ ์ด์šฉ ๊ฐ€๋Šฅํ•˜๋ฉฐ, ํ‹ฐ์Šคํ† ๋ฆฌ ๊ธฐ๋ณธ ๋„๋ฉ”์ธ์—์„œ๋งŒ ๋™์ž‘ํ•ฉ๋‹ˆ๋‹ค.