일일이 웹팩, 바벨을 손보는 시간을 아껴서 개발에 투자하기 위해 react CLI인 create-react-app
을 사용해 프로젝트를 생성
현재 18년 11월 기준으로 create-react-app
은 version 2로 업데이트 되면서
Webpack 4
, Babel7
, PostCSS
, Sass
등을 기본적으로 지원하게 되었고
v1과 비교했을 때 추가적인 기능을 사용하기 위해서 웹팩에 따로 세팅한 부분이 없었다.
create-react-app (프로젝트명)
으로 프로젝트를 생성하면 간단하게 최신버전으로 프로젝트가 만들어지고,
yarn start
명령어를 통해 3000포트로 리액트 앱을 띄울 수 있다.
현재 토이 프로젝트로 진행중인 쇼핑몰 프로젝트의 package.json
은 다음과 같다.
{
"name": "mall-front",
"version": "0.1.0",
"private": true,
"dependencies": {
"axios": "^0.18.0",
"classnames": "^2.2.6",
"cross-env": "^5.2.0",
"i18next": "^11.9.1",
"i18next-browser-languagedetector": "^2.2.3",
"node-sass": "^4.9.3",
"react": "^16.5.2",
"react-dom": "^16.5.2",
"react-i18next": "^8.0.8",
"react-redux": "^5.0.7",
"react-router-dom": "^4.3.1",
"react-scripts": "2.0.4",
"redux": "^4.0.0",
"redux-saga": "^0.16.0"
},
"scripts": {
"start": "cross-env NODE_PATH=src react-scripts start",
"build": "cross-env NODE_PATH=src react-scripts build",
"test": "cross-env NODE_PATH=src react-scripts test",
"precommit": "lint-staged",
"eject": "react-scripts eject"
},
"eslintConfig": {
"extends": "react-app"
},
"browserslist": [
">0.2%",
"not dead",
"not ie <= 11",
"not op_mini all"
],
"lint-staged": {
"*.js": [
"prettier --trailing-comma es5 --double-quote --write",
"git add"
]
},
"devDependencies": {
"husky": "^1.1.0",
"lint-staged": "^7.3.0",
"prettier": "^1.14.3",
"redux-logger": "^3.0.6"
}
}
패키지 각각에 대한 용도는 다음과 같다.
- dependencies
- axios - 비동기 통신
- classnames - react의 className을 편하게 사용하기 위함
- cross-env - 프로젝트의 환경변수 및 경로 시작점을 정하기 위함 / src 폴더를 기준으로 절대경로를 작성해 import 시 상대경로 위치를 고민할 비용을 줄임
- i18next - 페이지 번역을 위한 라이브러리 ( 한/영 페이지 구성 )
- node-sass - Sass 사용
- react-router-dom - 리액트 라우터 v4
- redux, react-redux, redux-saga - 리덕스, 리덕스 사가
- redux-logger - redux 흐름 파악
- husky, lint-staged, prettier - 커밋이 되기 전 코드 스타일을 통일 시키기 위함
- scripts
- src를 기준점으로 스크립트 시작, 빌드, 테스트를 실행 할 수 있도록 변경
- 프리커밋을 통해 lint-staged의 내용대로 코드 스타일 자동 변경
- eject - 안할예정..
- lint-staged
- —trailing comma es5 - 객체나 함수, 배열 등의 마지막 인자 뒤에 콤마를 붙임
- —double-quote - 쌍따옴표 사용
- git add - 커밋 전에 lint-staged를 실행
나머지는 기본값을 그대로 유지
번역 라이브러리를 제외하고 위와 같은 세팅값을 가지기 위한 커맨드
yarn add axios classnames cross-env node-sass react-redux react-router-dom redux redux-saga
yarn add --dev husky lint-staged prettier redux-logged
이렇게 프로젝트는 세팅 완료.