2022. 5. 15. 22:28ㆍ공부/React
개발 기본 환경
Node.js
Node.js
Node.js® is a JavaScript runtime built on Chrome's V8 JavaScript engine.
nodejs.org
GitHub - nvm-sh/nvm: Node Version Manager - POSIX-compliant bash script to manage multiple active node.js versions
Node Version Manager - POSIX-compliant bash script to manage multiple active node.js versions - GitHub - nvm-sh/nvm: Node Version Manager - POSIX-compliant bash script to manage multiple active nod...
github.com
nvm install 14.16.1
nvm use 14.16.1
nvm alias default 14.16.1
Visual Code
Visual Studio Code - Code Editing. Redefined
Visual Studio Code - Code Editing. Redefined
Visual Studio Code is a code editor redefined and optimized for building and debugging modern web and cloud applications. Visual Studio Code is free and available on your favorite platform - Linux, macOS, and Windows.
code.visualstudio.com
프로젝트 시작하기
새로운 React 앱 만들기 – React (reactjs.org)
새로운 React 앱 만들기 – React
A JavaScript library for building user interfaces
ko.reactjs.org
Create React App
Create React App (create-react-app.dev)
Create React App
Set up a modern web app by running one command.
create-react-app.dev
npx : npm 5.2.0 이상부터 함께 설치된 CLI 명령어
- 프로젝트의 로컬에 설치된 패키지의 실행 커맨드를 사용할 때
- 기존에 npm은 package.json의 npm scripts 부분에 명령어를 추가해서 사용해야 했다.
- npm run 명령어
- npx는 바로 실행할 수 있다.
- 기존에 npm은 package.json의 npm scripts 부분에 명령어를 추가해서 사용해야 했다.
- 전역으로 실행하고 싶은 패키지를 사용할 때
- npm i -g 를 이용해 전역에 꼭 설치해서 사용해야 했다.
- npx로 최신 버전의 패키지를 바로 실행할 수 있다.
npx create-react-app 프로젝트명
프로젝트 명은 소문자만을 사용하도록 한다. (npm naiming restrictions)
package.json
만들어진 프로젝트의 package.json을 살펴보면 다음과 같다.
{
"name": "reactprac01",
"version": "0.1.0",
"private": true,
"dependencies": {
"@testing-library/jest-dom": "^5.16.4", // 테스트 툴 라이브러리
"@testing-library/react": "^13.2.0", // 테스트 툴 라이브러리
"@testing-library/user-event": "^13.5.0", // 테스트 툴 라이브러리
"react": "^18.1.0", // 리액트 핵심 모듈
"react-dom": "^18.1.0", // 리액트 핵심 모듈
"react-scripts": "5.0.1", // CRA 라이브러리
"web-vitals": "^2.1.4" // 구글에서 사이트 경험을 측정하는 라이브러리
},
"scripts": {
"start": "react-scripts start", // 개발서버 실행
"build": "react-scripts build", // 배포(프로덕션) 모드 실행
"test": "react-scripts test",
"eject": "react-scripts eject"
},
"eslintConfig": {
"extends": [
"react-app",
"react-app/jest"
]
},
"browserslist": {
"production": [
">0.2%",
"not dead",
"not op_mini all"
],
"development": [
"last 1 chrome version",
"last 1 firefox version",
"last 1 safari version"
]
}
}
npm start : 개발용 서버를 실행시킨다. 수정사항이 바로 반영됨.
npm run build : 코드를 배포용으로 압축하여 build 폴더를 만든다.
npm test : jest를 통해 test code를 실행한다. (unit test)
npm run eject : CRA가 지원하지 않는 기능을 사용하기 위해 CRA 관리방법을 벗어난다는 의미. 돌이킬 수 없다.
build 폴더 확인방법
npm install serve -g
serve -s build
serve라는 패키지를 전역으로 설치해서 build 폴더를 직접 웹 서버로 동작시킨다.
npm test
- __tests__ 폴더 안의 .js 파일
- .test.js 로 끝나는 파일
- .spec.js 로 끝나는 파일
위 세가지 파일들을 자동으로 추적하여 유닛 테스트를 진행한다.
npm run eject
CRA로 만든 프로젝트에서 CRA를 제거하는 명령어.
CRA 내에서 해결이 안되는 설정을 추가할 때 보통 사용한다.
그러나 돌이킬 수 없으므로 사용을 권장하지 않으며, 요즘은 대부분의 기능을 CRA에서 지원하므로 굳이 할 필요는 없다.
만약 eject를 하게 된다면
- react-scripts 제거
- CRA에 의해 숨겨진 채 사용되던 각종 패키지가 package.json에 나타난다.
- jest, Babel, ESLint 등의 설정이 추가된다.
- 각종 설정 파일이 config 폴더에 추가된다.
ESLint
일반 프로젝트에서는 따로 ESLint를 설치해서 사용해야 했다.
하지만 CRA에서는 이를 기본적으로 내장하고 있다.
사용자 정의 rules는 객체 형태로 다음처럼 추가하면 된다.
Prettier
Prettier · Opinionated Code Formatter
Prettier · Opinionated Code Formatter
Opinionated Code Formatter
prettier.io
코드의 일관성을 유지시켜 주는 formatter 패키지다.
예를 들면, 문자열은 따옴표와 쌍따옴표를 사용할 수 있는데 쌍따옴표만을 사용하도록 하는 식.
Prettier는 CRA 내장 패키지가 아니므로 따로 설치가 필요하다.
npm i -d prettier
자동 사용
VS Code에서 Prettier 플러그인을 설치한 뒤
VS Code 기본 설정에서 "format" 검색 후 기본 포매터를 Prettier로, Format On Save를 체크해두면
저장할 때마다 Prettier 설정에 맞게 자동으로 코드가 정리된다.
prettier의 설정을 변경하고 싶다면 루트 경로에 .prettierrc 파일을 생성 한 뒤 거기에 설정하면 된다.
Prettier · Opinionated Code Formatter
Opinionated Code Formatter
prettier.io
수동 사용
만약 Prettier를 한 파일에 직접 사용하고 싶다면 Ctrl + Shift + P 를 눌러 Format Document 를 실행하면 된다.
ESLint 설정 충돌 방지
ESLint와 같이 사용할 경우 충돌을 방지해야 한다.
일반적인 프로젝트에서는 다음의 모듈을 설치해서 루트경로에 .eslintrc.json을 생성한 뒤 설정을 추가해야 한다.
GitHub - prettier/eslint-config-prettier: Turns off all rules that are unnecessary or might conflict with Prettier.
Turns off all rules that are unnecessary or might conflict with Prettier. - GitHub - prettier/eslint-config-prettier: Turns off all rules that are unnecessary or might conflict with Prettier.
github.com
CRA 에서는 그냥 ESLint 설정에서 Prettier를 제외시켜주면 된다.
husky
Git 작업 시의 라이프사이클 훅을 쉽게 사용할 수 있도록 해주는 패키지.
GitHub - typicode/husky: Git hooks made easy 🐶 woof!
GitHub - typicode/husky: Git hooks made easy 🐶 woof!
Git hooks made easy 🐶 woof! Contribute to typicode/husky development by creating an account on GitHub.
github.com
npm i -D husky
npx husky install // git hook 설치
npx husky install을 하게 되면, 루트 경로에 .husky 폴더가 생성된다.
사용 방법
테스트를 위해 huskytest 스크립트를 임의로 만들었다.
git commit 을 하게되면 exit 1 코드에 의해 실패될 것이다.
npx husky add .husky/pre-commit "npm huskytest"
위의 명령어를 실행하면 .husky 폴더 하위에 pre-commit 파일이 생성된 뒤 npm huskytest 문구가 추가된다.
따라서 commit 전에 npm huskytest 문이 먼저 실행될 것이다.
이런식으로 commit 전에 특정 스크립트가 실행될 수 있도록 만들어 줄 수 있다.
보통은 Prettier나 ESLint를 통해 코드를 재정비한 뒤 업로드 되도록 하는데에 사용된다.
lint-staged
lint-staged
Lint files staged by git. Latest version: 12.4.1, last published: 19 days ago. Start using lint-staged in your project by running `npm i lint-staged`. There are 1652 other projects in the npm registry using lint-staged.
www.npmjs.com
husky와 연계하여 commit 대상 파일들을 lint하는 패키지
npm husky -D
npx husky i
npx husky add .husky/pre-commit "npx lint-staged"
npm i lint-staged -D
package.json에 다음과 같은 설정을 추가해서 사용할 수 있다.
어떤 js 파일이 git 목록에 올라오면 위처럼 eslint --fix 문을 통과하고, git add로 다시 목록에 올라온다.
prettier가 설치돼 있으면 다음의 명령어를 추가해줄 수도 있다.
이후 .husky/pre-commit 파일에 "npx lint-staged" 구문을 추가해주면 commit 시에 자동으로 lint해주는 기능이 구현된다.
'공부 > React' 카테고리의 다른 글
[React 시작하기] 03. React Component Styling (0) | 2022.05.17 |
---|---|
[React 시작하기] 02. React Router (0) | 2022.05.16 |
[React 주요 개념] 09. 폼 (0) | 2022.05.15 |
[React 주요 개념] 08. 리스트와 Key (0) | 2022.05.15 |
[React 주요 개념] 07. 조건부 렌더링 (0) | 2022.05.15 |