cra 없이 webpack+babel로 리액트 초기 설정하기!
모야 프로젝트를 진행하면서 초기 세팅을 맡게되었다.
cra는 webpack과 babel 세부설정을 위해선 eject해야한다.
유지보수를 위해서 처음부터 cra없이 세팅하는게 맞다는 생각이 들어 직접 세팅하였다.
webpack은 공식문서가 잘 되어있어서 수월하게 세팅할 수 있었다.
아래의 세팅은 정답이 아니다..!
초기 설정
src 폴더와 public 폴더를 만들었다.
src 폴더에는 js 파일들이 작성된다.
public 폴더에는 index.html을 만들었는데, src의 js파일들을 webpack으로 번들링하여 하나의 js파일을 만든다. 그리고 이를 사용한다..!
먼저 초기설정을 해준다.
루트디렉토리로 가서 아래의 커맨드를 입력하면 된다.
1 | npm init -y |
public/index.html은 다음과 같이 작성한다.
./bundle.js는 webpack으로 번들링된 결과물이다.
1 |
|
index.js는 다음과 같이 작성한다.
App 컴포넌트의 리턴값은 진입점이라 생각하고 작성해주면 된다.
1 | import React from "react"; |
필요한 모듈 설치
필요한 모듈은 어떤 작업을 할지에 따라 달라진다.
나는 아래의 모듈들을 설치하였다.
1 | npm i @babel/core @babel/preset-env @babel/preset-react babel-loader -D |
바벨 세팅
루트 디렉토리에서 다음과 같은 커맨드를 입력한다.
1 | touch .babelrc |
preset는 자주 쓰이는 plugin들의 집합이다.
babel팀에서 공식적으로 제공하는 preset과 비공식 preset이 있다.
필수적인 preset을 입력하였다.
또한 plugin에는 핫 리로딩을 위해 react-refresh를 넣어주었다.
최종적으로 .babelrc의 내용은 다음과 같다.
1 | { |
webpack.config.js 설정
webpack.config.js 파일을 작성한다.
1 | const path = require("path"); |
eslint + prettier 설정하기
코드 컨벤션을 위해 eslint와 prettier를 적용하였다.
@babel/polyfill은 devDependencies가 아닌 dependencies로 설치해주어야 한다.
1 | npm i eslint eslint-config-prettier eslint-plugin-prettier prettier -D |
prettier파일을 다음과 같이 작성하였다.
옵션은 공식문서를 참조하였다.
1 | { |
.eslintrc 파일을 다음과 같이 작성해주었다.
1 | { |
babel polyfill 설정하기
더 이상 사용되지 않는 모듈이라고 한다.
@babel/polyfill을 보면 core-js/stable과 regenerator-runtime/runtime로 대체하여 사용한다고 한다!
babel preset-env target 설정하기
최신 크롬버전에 맞는 플러그인만 삽입하도록 변경하였다.
1 | { |
추가로 해야할 것
- webpack-dev-server proxy 설정하기!
나중에 cors로 인해 작업에 차질이 생길 수 있다. 미리 알아두어야 좋을 것 같다.
webpack-dev-server proxy
느낀점
밑바닥에서 하나씩 차근차근 설정하니까 재밌고 오히려 욕심도 생긴다..!
webpack 객체의 property 자체에 대해 많이 알아봤는데, 시간이 없어서 다 적지 못하는게 아쉽다.
또 알게 된 것이 많았다.
Ref
Setup Webpack and Babel for React