React + babel + webpack 으로 boilerplate 생성 정리
프론트 알 못이라… 이번 기회에 각 용어와 셋팅 방법을 정리해보려고 한다
목차
- 들어가기 전에..
- 프로젝트 생성
- webpack 설치
- bebel 설치
- webpack 설정
- react
- webpack plugin 추가
들어가기 전에..
webpack 이란?
- js 파일을 하나로 번들링 해준다 (웹페이지 요청시 request 숫자를 줄일 수 있다)
- npm 패키지를 Front-end에서 사용할 수 있다
- ES6, ES7 등 더 많은 기능을 쓸 수 있다
- 불필요한 파일을 빼고 번들링이 가능하다
- less, scss 등을 사용할 수 있다 (css로 변경 가능)
- Hot Module Replacement 를 사용할 수 있다
- 어떤 파일이던 js파일에 넣어준다
babel 이란?
- ES6, ES7으로 작성된 코드들을 ES5코드로 transpiling 해주는것
- 다양한 모듈을 담는 역할을 하며, 코드를 transpiling 하기위해 작은 모듈(presets)을 사용한다
babel-cli: transpiling 수행babel-register: 각 모듈을 결합할 때 사용 (production 용이 아니다).babelrc: 바벨 설정 파일(설정하지 않으면 단순히 파일을 옮기는 작업만 수행)babel-polyfill: ES6 환경 제공babel-plugins: babel에 여러 transform-plugin을 추가,.babelrc에서 설정하여도 되고 webpack에서 설정해도 된다
transpiling 이란? 한 언어로 작성된 소스코드를 비슷한 수준의 추상화를 가진 다른언어로 변환하는 방법 (ex: typescript -> javascript)
즉 ES6/ES7으로 작성한 js파일을 babel을 통해 transpiling 되고, webpack이 이를 하나의 js파일로 번들링 해준다
- npm 이란?
- Node Package Modules 의 약자
- node.js의 패키지 관리툴로서 자바스크립트로 패키지된 모듈들을 쉽게 공유할 수 있도록 도와주는 오픈소스 프로젝트
- 개발자가 어떤 패키지를 쉽게 설치하고 퍼블리싱 할 수 있는 command line client
프로젝트 생성
(npm은 pc에 설치되어있다고 가정하고 진행)
비어있는 boilerplate 폴더 생성후 npm을 init한다
webpack 설치
위에서 생성한 폴더에 npm을 이용해 webpack을 설치하고 webpack 설정 파일(webpack.config.js)을 생성한다
babel 설치
마찬가지로 npm을 이용해 babel과 관련된 코어모듈을 함께 설치하고 babel 설정파일(.babelrc)을 생성한다
주의! babel-preset-es2015는 deprecated 되었으므로 babel-preset-env를 쓰자
위에 만든 .babelrc파일에 다음과 같이 설정한다
webpack 설정
아까 위에서 만든 webpack.config.js파일을 열어서 다음과 같이 설정한다
위 webpack.config.js설정에서 entry point를 ./src/app.js에 만들었으므로, 해당 파일을 하나 만들자
|
|
여기까지 만든 이후, webpack이 정상 작동을 하는지 테스트 한번 해보자package.json파일을 열어서 다음과 같이 추가한다
|
|
이후 아래를 명령어를 입력했을때 webpack설정에 적혀있듯이, dist폴더 하단에 bundle.js로 정상적으로 만들어 지는지 확인하자
React
위와 마찬가지로 npm을 이용하여 react와 react-dom을 설치한다
|
|
이제 react를 구성하기 위한 간단한 Hello App을 만든다
|
|
|
|
|
|
webpack plugin 추가
HTML webpack plugin
public/index.html에 자동으로 <script src="bundle.js"></script> 태그를 넣어 줄 수 있도록 plugin을 추가한다
|
|
webpack.config.js 파일 하단에 플러그인을 넣어준다
이후 npm run build 명령어를 실행하여, dist폴더 하단에 bundle.js와 index.html이 생성되는지 확인하고 index.html에 <script type="text/javascript" src="bundle.js"></script> 가 들어가 있는지 확인하자
webpack Dev Server
간편한 개발을 위해 dev server 플러그인을 설정한다
|
|
webpack.config.js 에 devServer 설정을, package.json엔 실행 스크립트를 추가한다
|
|
|
|
npm run start로 서버를 실행하고, 브라우저에서 localhost:3000으로 접속하여 Hello App이 뜨는걸 확인