React

React 에 typescript 적용 후 webpack에 react-refresh 세팅하는법

honey.kikiki 2021. 12. 10. 23:14
728x90

webpack에 react-refresh 적용하기

1) 리엑트에 타입스크립트 적용한후 파일을 고칠떄마다 계속 빌드해줘야하는 번거로움이 있어 리엑트 핫 로딩기능을 적용하려한다.

npm i -D
@babel/core
@types/webpack
@types/webpack-dev-server
ts-node
fork-ts-checker-webpack-plugin
babel-loader
react-refresh
webpack-dev-server
@pmmmwh/react-refresh-webpack-plugin
@types/webpack
@types/webpack-dev-server
@babel/core : babel-core: 웹팩용 바벨(?)이다. 터미널에서 쓸 때 babel-cli를 썼는데 이걸 웹팩에서 사용하는 용도다.
ts-node : ts-node는 Node.js용 TypeScript 실행 엔진 및 REPL입니다.
fork-ts-checker-webpack-plugin : 별도의 프로세스에서 TypeScript 유형 검사기를 실행하는 Webpack 플러그인입니다.
babel-loader : 이 패키지를 사용하면 Babel 및 webpack을 사용하여 JavaScript 파일을 변환할 수 있습니다 .
webpack-dev-server :  nodemon과 같이 웹팩 환경에서 개발서버를 생성
리액트 리프레쉬 사용
react-refresh
@pmmmwh/react-refresh-webpack-plugin

 

 

 

 

webpack.config.ts

import path from 'path';
import ReactRefreshPlugin from '@pmmmwh/react-refresh-webpack-plugin';
import ForkTsCheckerWebpackPlugin from 'fork-ts-checker-webpack-plugin';
import { Configuration } from 'webpack';
 
const config: Configuration = {
  name: 'number-baseball-dev',
  mode: 'development',
  devtool: 'eval',
  resolve: {
    extensions: ['.js', '.jsx', '.tsx', '.ts'],
  },
  entry: {
    app: './client',
  },
  module: {
    rules: [
      {
        loader: 'babel-loader',
        options: { plugins: ['react-refresh/babel'] },
      },
      {
        test: /\.tsx?$/,
        loader: 'ts-loader',
        exclude: path.join(__dirname, 'node_modules'),
      },
    ],
  },
  plugins: [new ReactRefreshPlugin(), new ForkTsCheckerWebpackPlugin()],
  output: {
    path: path.join(__dirname, 'dist'),
    filename: '[name].js',
    publicPath: '/dist',
  },
  devServer: {
    devMiddleware: { publicPath: '/dist' },
    static: { directory: path.resolve(__dirname) },
    hot: true,
  },
};
export default config;