React-default-setting

  • react : ๋ฆฌ์•กํŠธ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ

  • react-dom : browser, dom, webapp ๊ด€๋ฆฌ

$ npm install react react-dom
  • @babel/preset-react : jsx ๋ฌธ๋ฒ•์„ javascript๋กœ ๋ณ€ํ™˜

$ npm install @babel/preset-react
//  package.json

{
  "name": "React",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {
    "prod": "webpack --mode=production",
    "dev": "webpack --mode=development",
    "watch": "webpack-dev-server --mode development --open --hot"
  },
  "keywords": [
    "webpack","React"
  ],
  "author": "",
  "license": "MIT",
  "devDependencies": {
    "@babel/core": "^7.10.5",
    "@babel/preset-env": "^7.10.4",
    "@babel/preset-react": "^7.10.4", // react ํ”„๋กœ์ ํŠธํ• ๋•Œ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.
    "babel-loader": "^8.1.0",
    "html-webpack-plugin": "^4.3.0",
    "webpack": "^4.41.2",
    "webpack-cli": "^3.3.10",
    "webpack-dev-server": "^3.11.0",
    "webpack-merge": "^5.0.9"
  },
  "dependencies": {
    "@babel/polyfill": "^7.10.4",
    "react": "^16.13.1",  //react ํ”„๋กœ์ ํŠธํ• ๋•Œ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.
    "react-dom": "^16.13.1"  //react ํ”„๋กœ์ ํŠธํ• ๋•Œ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.
  }
}
//.babelrc

{
    "presets": [
        "@babel/env",
        "@babel/react" //react ํ”„๋กœ์ ํŠธํ• ๋•Œ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.
    ]
}
// webpack.config.js

const path = require('path');
const HtmlWebpackPlugin = require('html-webpack-plugin');
require("@babel/polyfill");

module.exports = {
    entry: {
        app: [
            '@babel/polyfill',
            path.join(__dirname, './src/index.js')
        ]
    },
    module: {
        rules: [
            { //react ํ”„๋กœ์ ํŠธํ• ๋•Œ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค. ST
                test: /\.(js|jsx)$/,
                exclude: /node_module/,
                use: {
                    loader: 'babel-loader'
                }
            }, //react ํ”„๋กœ์ ํŠธํ• ๋•Œ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค. ED
            {
                test: /\.js$/,
                loader: 'babel-loader'
            },
            {
                test: /\.css$/,
                use: [
                  'css-loader'
                ]
            }
        ]
    },
    plugins: [
        new HtmlWebpackPlugin({
            template: './public/index.html',
            filename: 'index.html'
        })
    ],
    output: {
        filename: '[name].js',
        path: path.join(__dirname, 'dist')
    },
}
<!-- public/index.html -->

<!DOCTYPE html>
<html lang="ko">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>My React App</title>
</head>
<body>
    <div id="root"></div>
</body>
</html>
// src/App.js

import React from 'react';
import Hello from './component/Hello';

function App() {
    return (
    <>
        <Hello />
    </>
    )
};

export default App;
// src/index.js

import React from 'react';
import ReactDOM from 'react-dom';
import App from './App'

ReactDOM.render(<App />, document.getElementById("root"));

๋ฆฌ์•กํŠธ๋ฅผ ์ˆ˜๋™์œผ๋กœ ์ฒ˜์Œ๋ถ€ํ„ฐ ํ™˜๊ฒฝ์„ค์ •์„ ํ•œ๋‹ค๊ณ  ํ–ˆ์„๋•Œ ๊ธฐ๋ณธ์ ์ธ ํด๋” ๊ตฌ์กฐ์ž…๋‹ˆ๋‹ค.

Last updated

Was this helpful?