react 프로젝트를 setting하는 방법들은 다양하다.
react 초기 세팅 방법들 에서 작성한 방법들 중에
어떠한 tool을 사용하지 않고 설정하는 방법을 소개해본다.
진행한 내용은 아래 github repository로 확인할 수 있다.
기본환경은 windows 10에서 진행되고
PackageManager는 npm으로 한다.
이 시리즈의 대상 독자는
React를 어느정도 다루어 봤다고 가정한다. (CRA로 만들어보거나..)
가급적 자세하게 작성할 예정이지만,
설명이 길어지는 부분들은 따로 학습이 필요할 수 있다.
잘못된 부분이 있다면 댓글남겨주시면 확인하고 수정하겠습니다.
시리즈로 작성될 예정이며 아래 순서로 작성될 것 같다.
시리즈는 글의 길이에 따라서 분리하여 작성될 수 있다.
(1) 초기 설정 (react, tyepscript, webpack, babel)
(2) styled-comopnents 적용
(3) ESLint, Prettier 적용
(4) 간단한 App 만들어보기
mkdir non-cra-react
cd non-cra-react
npm init -y
고민해보지 않은 문제였고, 별 생각없이 느낌적으로 의존성 관리를 하고 있었다.
글을 공개하려고 마음을 먹고 찾아보다가 알게된 내용을 공유한다.
https://github.com/facebook/create-react-app/issues/6180 에 따르면
React App은 build과정에서 bundler가 App에서 사용된 module들을 모두 필요로 하고
최종 결과물이 Static bundle형태로 제공되기 때문에 dependencies와 devDependencies를 구분할 필요가 없다.
따라서, node module을 배포하는 것이 아니라면 어디에 두어도 상관없다.
이 글에서는 devDependencies를 고려하지 않는다.
잘 이해가 안되어도, 그냥 넘어가도 무방하다.
모듈을 설명 하기에는 글이 길어지기때문에 간단하게 요약만 하겠다.
npm install react react-dom react-refresh @types/react @types/react-dom
react
react core 모듈react-dom
dom render 모듈react-refresh
react-hot-reloader의 후속 (새로고침 하지 않고 컴포넌트 렌더링)@types/*
typescript 환경이므로 모듈 자체가 @types 를 제공하지 않을 때 별도로 설치해준다.typescript 환경에서 개발을 하기 위해서는 typescript 설치가 필요하다.
또한 최종 build 결과물은 javascript이므로 javascript로 transpile(compile) 하는 과정이 필요하다.
transpile과 compile에 대한 차이는 링크 로 대신한다.
npm install typescript
npx tsc --init
tsconfig의 option들을 설명하는 글은 정말 많다.
해당 글에서 다루기에는 방대하기 때문에 모든걸 설명하지는 않는다.
{
"compilerOptions": {
"target": "es5",
"jsx": "react",
"module": "commonjs",
"moduleResolution": "node",
"allowJs": true,
"outDir": "./dist/",
"esModuleInterop": true,
"forceConsistentCasingInFileNames": true,
"strict": true,
"noImplicitAny": true,
"skipLibCheck": true
},
"include": [
"src/**/*"
]
}