프로젝트 환경 구성은 개발자들이 협업하고 효율적으로 작업할 수 있도록 프로젝트의 기본 구조, 도구, 설정 등을 체계적으로 준비하는 과정입니다.
프로젝트의 가독성과 유지보수성을 높이기 위해 초기 디렉토리 구조를 설정합니다.
프로젝트의 규모에 따라서 효율적인 디렉토리 구조를 설정하자
npm create vite@latest -- --template react-ts.gitignoreGit에 포함되지 않아야 할 파일 및 디렉토리 설정:
node_modules/
dist/
.env
.vscode/
.DS_Store
*.log
.env환경 변수 파일로 민감한 정보를 관리합니다.
create-react-app(CRA)
REACT_APP_으로 변수명 시작 ```
REACT_APP_API_KEY=abcd
REACT_APP_API_URL=https://example.com
``` ```
const API_KEY=process.env.REACT_APP_API_KEY;
const API_URL=process.env.REACT_APP_API_URL;
```Vite
VITE_로 변수명 시작 ```
VITE_API_KEY=abcd
VITE_API_URL=https://example.com
``` ```
const API_KEY=import.meta.env.VITE_API_KEY;
const API_URL=import.meta.env.VITE_API_URL;
```협업 환경에서 ESLint와 Prettier의 설정을 통일해 코드의 일관성을 유지
npm install -D eslint
.eslintrc.json
{
"root": true,
"parser": "@typescript-eslint/parser",
"plugins": ["@typescript-eslint"],
"extends": ["eslint:recommended", "plugin:@typescript-eslint/recommended"],
}
npm install -D prettier
.prettierrc
{
"overrides": [
{
"files": ["*.js", "*.ts", "*.tsx"],
"options": {
"semi": true,
"singleQuote": true,
"tabWidth": 2,
"trailingComma": "es5",
"printWidth": 100,
"bracketSpacing": true,
"arrowParens": "always"
}
}
]
}
컴포넌트 기반 UI 라이브러리.
타입 안정성을 제공:
npm install --save-dev typescript
npx tsc --init
npx create-next-app@latest frontend-project
npm install @reduxjs/toolkit react-redux
import { configureStore, createSlice } from '@reduxjs/toolkit';
import { Provider, useSelector, useDispatch } from 'react-redux';
const counterSlice = createSlice({
name: 'counter',
initialState: { value: 0 },
reducers: {
increment: (state) => { state.value += 1; },
},
});
const store = configureStore({ reducer: counterSlice.reducer });
function Counter() {
const count = useSelector((state) => state.value);
const dispatch = useDispatch();
return (
<div>
<p>Count: {count}</p>
<button onClick={() => dispatch(counterSlice.actions.increment())}>Increase</button>
</div>
);
}
function App() {
return (
<Provider store={store}>
<Counter />
</Provider>
);
}
npm install recoil
CSS-in-JS 라이브러리:
npm install styled-components
유틸리티 클래스 기반 CSS 프레임워크:
npm install tailwindcss postcss autoprefixer
npx tailwindcss init
컴포넌트 기반 디자인 시스템:
npm install @mui/material @emotion/react @emotion/styled
HTTP 요청 라이브러리:
npm install axios
import axios from 'axios';
axios.get('https://api.example.com/data')
.then((response) => {
console.log(response.data); // 응답 데이터 자동 JSON 변환
})
.catch((error) => {
console.error('Error:', error); // HTTP 에러 자동 처리
});
내장 HTTP 요청 API:
fetch('https://api.example.com/data')
.then((response) => {
if (!response.ok) { // HTTP 상태 코드 확인 필요
throw new Error(`HTTP error! status: ${response.status}`);
}
return response.json(); // JSON 변환 수동 처리
})
.then((data) => {
console.log(data);
})
.catch((error) => {
console.error('Error:', error);
});
테스트 프레임워크:
npm install --save-dev jest @testing-library/react
정적 사이트 배포:
dist/ 또는 build/ 디렉토리를 업로드.Next.js 및 React 프로젝트에 적합:
npm run build
프로젝트의 사용 방법과 주요 내용을 정리합니다.