JuneStudy
JuneStudy
JuneStudy
전체 방문자
오늘
어제
  • 분류 전체보기 (21)
    • WIL (4)
    • 알고리즘 (6)
    • 개발 (11)
      • HTML+CSS+Javascript 기본 (0)
      • Typescript (5)
      • React (6)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
JuneStudy

JuneStudy

개발/React

Webpack Dev Server 와 Hot Reloading

2022. 1. 10. 12:47

webpack : v5.65.0

webpack-cli : v4.9.1

 

Hot Reloading에 필요한 패키지 설치

react-refres : v0.11.0

@pmmmwh/react-refresh-webpack-plugin : v0.5.4

 

webpack-dev-server는 변경점을 저장하면 실시간으로 새로고침을 시켜준다

그 때 기존 데이터를 유지하기 위해 사용되는 패키지다.

yarn add react-refresh @pmmmwh/react-refresh-webpack-plugin -D

webpack-dev-server 설치

webpack-dev-serve : v4.7.2

webpack-dev-server는 변경점을 감지할 수 있음

yarn add -D webpack-dev-server

npm run dev 시 실행되는 명령어

// package.json

"scripts": {
    "dev": "webpack serve --env development"
},

webpack 환경설정

const path = require('path');
const ReactRefreshWebpackPlugin = require('@pmmmwh/react-refresh-webpack-plugin'); // 핫 리로드에 사용되는 플러그인 불러오기

module.exports = {
  name: 'word-relay-dev',
  mode: 'development',
  devtool: 'inline-source-map',
  resolve: {
    extensions: ['.js', '.jsx'],
  },
  entry: {
    app: './client',
  },
  module: {
    rules: [{
      test: /\.jsx?$/,
      loader: 'babel-loader',
      options: {
        presets: [
          ['@babel/preset-env', {
            targets: {browsers: ['last 2 chrome versions']},
            debug: true,
          }],
          '@babel/preset-react',
        ],
        plugins: ['react-refresh/babel'], // 바벨이 최신 문법을 옛날 javascript문법으로 transfy 할 때 핫 리로딩 기능까지 추가됨
      },
      exclude: path.join(__dirname, 'node_modules'),
    }],
  },
  plugins: [
    new ReactRefreshWebpackPlugin(), // 플러그인 장착 (빌드할때마다 실행됨)
  ],
  output: {
    path: path.join(__dirname, 'dist'),
    filename: '[name].js',
    publicPath: '/dist',
  },
  devServer: {  // dev server 설정
    devMiddleware: { publicPath: '/dist' },
    static: { directory: path.resolve(__dirname) }, // 정적파일(index.html)의 경로
    // 최상위폴더가 아닌 하위폴더에 있다면 ( ex: static: { directory: path.resolve(__dirname,'src') } )
    hot: true
  }
};

 

이렇게 설정 하고

npm run dev

를 실행하면 http://localhost:8080/ 주소로 실행이 된다.

수정사항을 저장하면 실시간으로 반영이 돼서 개발할때 편하다.

'개발 > React' 카테고리의 다른 글

Component 라이프사이클  (0) 2022.01.24
렌더링 최적화  (0) 2022.01.17
Webpack  (0) 2022.01.05
함수형 컴포넌트(Functional component) + 구구단 게임  (0) 2021.12.30
Class형 Component + 구구단 게임  (0) 2021.12.30
    '개발/React' 카테고리의 다른 글
    • Component 라이프사이클
    • 렌더링 최적화
    • Webpack
    • 함수형 컴포넌트(Functional component) + 구구단 게임
    JuneStudy
    JuneStudy

    티스토리툴바