정리

name description
babel es5 -> es6
.babelrc configuration + compiler
@babel/core es5 -> es6
@babel/preset-react react preset
@babel/preset-env browser compiler
babel-loader
-
webpack build one javascript file
webpack.config.js webpack configuration
webpack-dev-server live reloader
webpack-cli webpack command
html-webpack-plugin create html with output.jsW
-
npm init package.json
react react library
react-dom browser + dom + webapp

webpack.config.js

const path = require('path')                                        // core nodejs 모듈 중 하나, 파일 경로 설정할 때 사용
const HtmlWebpackPlugin = require('html-webpack-plugin')            // index.html 파일을 dist 폴더에 index_bundle.js 파일과 함께 자동으로 생성, 우리는 그냥 시작만 하고싶지 귀찮게 index.html 파일까지 만들고 싶지 않다.!!

module.exports = {                                      // moduel export (옛날 방식..)
    entry: './src/index.js',                            // 리액트 파일이 시작하는 곳
    output: {                                           // bundled compiled 파일
        path: path.join(__dirname, '/dist'),            //__dirname : 현재 디렉토리, dist 폴더에 모든 컴파일된 하나의 번들파일을 넣을 예정
        filename: 'index_bundle.js'
    },
    module: {                                           // loader를 module object에 넣을 예정
        rules: [
            {
                test: /\.js$/,                          // .js, .jsx로 끝나는 babel이 컴파일하게 할 모든 파일
                exclude: /node_module/,                 // node module 폴더는 babel 컴파일에서 제외
                use:{
                    loader: 'babel-loader'
                }
            }
        ]
    },
    plugins: [
        new HtmlWebpackPlugin({
            template: './src/index.html'                // 생성한 템플릿 파일
        })
    ]
}

위의 설정들을 크게 살펴보자

name description
path 파일의 경로를 지정
HtmlWebpackPlugin 컴파일 이후 index.html 파일을 생성
module.export 출력할 모듈
-
entry 컴파일 할 파일
output 컴파일 이후 파일
module 모듈의 컴파일 형식
plugin 사용할 plugins