package.json은 npm 패키지 저장소로부터 어떤 패키지를 내려받아 설치해야 하는지, 또한 우리의 프로젝트를 다른 프로젝트에서 사용할 수 있도록 어떻게 npm 패키지 저장소에 올릴 것인지를 설정할 수 있다.
"name": "mantis-free-react-admin-template",
"version": "1.3.0",
"private": true,
"homepage": "https://mantisdashboard.io/free",
"author": {
"name": "CodedThemes",
"email": "codedthemes@gmail.com",
"url": "https://codedthemes.com/"
여기서 name과 version은 해당 패키지 이름과 버전을 저장한다.
private 필드는 프로젝트가 npm 패키지 저장소로 발행(publish)해도 되는지 여부를 지정하기 위해서 사용한다.
기본값은 'false'이기 때문에 따로 'true'로 설정하지 않으면 프로젝트가 npm 패키지 저장소로 업로드 될 수 있기 때문에 'true'로 설정하는 것이 좋다.
homepage 필드는 해당 프로젝트의 홈페이지나 문서 페이지의 URL을 설정한다. npm docs를 통해 해당 페이지에 방문할 수 있다.
author 필드는 이 프로젝트의 저자의 정보를 저장할 수 있는 필드이다.
"scripts": {
"start": "vite",
"build": "vite build",
"preview": "vite preview",
"lint": "eslint \"src/**/*.{js,jsx,ts,tsx}\"",
"lint:fix": "eslint --fix \"src/**/*.{js,jsx,ts,tsx}\"",
"prettier": "prettier --write \"src/**/*.{js,jsx,ts,tsx}\""
},
scripts 필드는 프로젝트를 수행하기 위해 자주 사용되는 작업을 스크립트로 등록하기 위해 사용된다.
명령어들을 정의한다고 생각하면 된다.
-start는 vite를 실행한다. vite는 개발 서버를 시작하는데 사용된다. 로컬 개발 서버를 시작함으로써 변경 사항을 실시간으로 확인할 수 있다. (npm start)
-build는 프로젝트를 배포할 준비가 되었을 때 사용하는 명령어이다. 빌드한 후 배포를 할 수 있다.
-preview는 프로젝트를 build한 후 미리보기 위해 로컬 서버를 실행하는 명령어이다.
-lint는 eslint를 실행하여 src 디렉터리 내의 모든 파일을 검사한다. 코드의 품질과 스타일 일관성 유지에 도움을 준다. (npm run lint)
-lint:fix는 eslint를 실행하여 자동으로 수정할 수 있는 코드를 수정해주는 명령어이다.
-prettier은 prettier을 사용하여 코드를 포맷팅합니다. 코드 스타일을 일관되게 유지해주며, commint전에 사용하여 코드를 깔끔하게 만들어줍니다.
"dependencies": {
"@ant-design/colors": "^7.0.2",
"@ant-design/icons": "^5.3.1",
"@emotion/cache": "^11.11.0",
"@emotion/react": "^11.11.4",
"@emotion/styled": "^11.11.0",
"@fontsource/inter": "^5.0.17",
"@fontsource/poppins": "^5.0.12",
"@fontsource/public-sans": "^5.0.17",
"@fontsource/roboto": "^5.0.12",
"@mui/base": "^5.0.0-beta.38",
"@mui/lab": "^5.0.0-alpha.167",
"@mui/material": "^5.15.12",
"@mui/system": "^5.15.12",
"@svgr/webpack": "^8.1.0",
"@vitejs/plugin-react": "^4.2.1",
"apexcharts": "^3.49.0",
"formik": "^2.4.5",
"framer-motion": "^11.0.8",
"lodash": "^4.17.21",
"process": "^0.11.10",
"prop-types": "^15.8.1",
"react": "^18.2.0",
"react-apexcharts": "^1.4.1",
"react-copy-to-clipboard": "^5.1.0",
"react-device-detect": "^2.2.3",
"react-dom": "^18.2.0",
"react-number-format": "^5.3.3",
"react-router": "^6.22.3",
"react-router-dom": "^6.22.3",
"simplebar-react": "^3.2.4",
"slick-carousel": "^1.8.1",
"swr": "^2.2.5",
"util": "^0.12.5",
"vite": "^5.2.10",
"vite-jsconfig-paths": "^2.0.1",
"web-vitals": "^3.5.2",
"yup": "^1.4.0"
},
dependencies 필드는 프로젝트에서 사용되는 라이브러리와 패키지의 목록을 정의한다. 프로젝트 실행과 개발에 필수적인 것들이 포함되어 있다.
(아래 각 패키지에 대한 설명. chat gpt 참조)
@ant-design/colors: ^7.0.2
설명: Ant Design의 색상 팔레트를 제공하는 패키지입니다. 이를 통해 일관된 디자인 시스템을 구축할 수 있습니다.
@ant-design/icons: ^5.3.1
설명: Ant Design에서 사용하는 아이콘 세트를 제공하는 패키지입니다. 프로젝트에서 아이콘을 쉽게 사용할 수 있게 해줍니다.
@emotion/cache: ^11.11.0
설명: Emotion 라이브러리의 캐싱 기능을 제공하는 패키지입니다. 성능을 최적화하고 스타일의 재사용을 돕습니다.
@emotion/react: ^11.11.4
설명: CSS-in-JS 라이브러리인 Emotion의 React 버전으로, 스타일링을 React 컴포넌트와 통합하여 사용할 수 있습니다.
@emotion/styled: ^11.11.0
설명: Emotion을 기반으로 하는 스타일링 도구로, styled-components와 유사하게 CSS를 JavaScript 내에서 작성할 수 있게 해줍니다.
@fontsource/inter: ^5.0.17
설명: Inter 폰트를 웹 프로젝트에서 쉽게 사용할 수 있게 해주는 패키지입니다.
@fontsource/poppins: ^5.0.12
설명: Poppins 폰트를 웹 프로젝트에서 쉽게 사용할 수 있게 해주는 패키지입니다.
@fontsource/public-sans: ^5.0.17
설명: Public Sans 폰트를 웹 프로젝트에서 쉽게 사용할 수 있게 해주는 패키지입니다.
@fontsource/roboto: ^5.0.12
설명: Roboto 폰트를 웹 프로젝트에서 쉽게 사용할 수 있게 해주는 패키지입니다. Google에서 제공하는 대표적인 웹 폰트 중 하나입니다.
@mui/base: ^5.0.0-beta.38
설명: Material-UI (MUI)의 기본 컴포넌트 라이브러리입니다. 컴포넌트의 로우 레벨 기능을 제공합니다.
@mui/lab: ^5.0.0-alpha.167
설명: MUI의 실험적인 컴포넌트 모음입니다. MUI 공식 컴포넌트에 포함되기 전의 새로운 기능을 테스트할 수 있습니다.
@mui/material: ^5.15.12
설명: Material-UI의 주요 컴포넌트 라이브러리입니다. Google의 Material Design을 기반으로 한 React 컴포넌트를 제공합니다.
@mui/system: ^5.15.12
설명: MUI의 스타일링 시스템 라이브러리입니다. 주로 테마와 스타일을 관리하는 데 사용됩니다.
@svgr/webpack: ^8.1.0
설명: SVG 파일을 React 컴포넌트로 변환할 수 있게 해주는 도구로, Webpack과 함께 사용됩니다.
@vitejs/plugin-react: ^4.2.1
설명: Vite와 React를 통합하기 위한 공식 플러그인입니다. React 개발에 필요한 설정을 제공합니다.
apexcharts: ^3.49.0
설명: 대화형 차트를 생성할 수 있는 JavaScript 라이브러리입니다.
formik: ^2.4.5
설명: React에서 폼을 쉽게 관리할 수 있게 해주는 라이브러리입니다. 폼 상태, 유효성 검사 등을 간단하게 처리할 수 있습니다.
framer-motion: ^11.0.8
설명: 애니메이션과 제스처를 처리할 수 있는 React용 라이브러리입니다. 복잡한 애니메이션을 쉽게 구현할 수 있습니다.
lodash: ^4.17.21
설명: JavaScript의 유틸리티 라이브러리로, 배열, 객체, 함수 등과 관련된 다양한 기능을 제공합니다.
process: ^0.11.10
설명: Node.js의 process 객체를 브라우저 환경에서 사용할 수 있게 해주는 폴리필 라이브러리입니다.
prop-types: ^15.8.1
설명: React에서 컴포넌트의 prop 타입을 검사하는 도구입니다. 컴포넌트에 전달되는 데이터의 유형을 검증합니다.
react: ^18.2.0
설명: React는 사용자 인터페이스를 구축하기 위한 JavaScript 라이브러리입니다.
react-apexcharts: ^1.4.1
설명: ApexCharts를 React 프로젝트에서 사용할 수 있게 해주는 래퍼입니다.
react-copy-to-clipboard: ^5.1.0
설명: 텍스트를 클립보드에 복사하는 기능을 제공하는 React 컴포넌트입니다.
react-device-detect: ^2.2.3
설명: 사용자의 디바이스 정보를 감지하고, 디바이스에 따라 다른 UI를 표시하는 데 사용되는 React 라이브러리입니다.
react-dom: ^18.2.0
설명: React를 DOM과 연결하는 라이브러리입니다. React 컴포넌트를 실제 웹 페이지에 렌더링하는 데 사용됩니다.
react-number-format: ^5.3.3
설명: 숫자 포맷팅을 쉽게 처리할 수 있는 React 컴포넌트입니다. 통화, 소수점, 전화번호 등을 포맷팅할 수 있습니다.
react-router: ^6.22.3
설명: React에서 라우팅을 처리하는 라이브러리입니다. 여러 페이지를 관리하거나 네비게이션을 쉽게 구현할 수 있습니다.
react-router-dom: ^6.22.3
설명: React Router의 DOM 관련 기능을 제공하는 라이브러리입니다. 브라우저 환경에서의 라우팅을 처리합니다.
simplebar-react: ^3.2.4
설명: 커스텀 스크롤바를 제공하는 React 컴포넌트입니다. 브라우저 기본 스크롤바 대신 사용됩니다.
slick-carousel: ^1.8.1
설명: 반응형 슬라이더를 생성할 수 있는 JavaScript 라이브러리입니다.
swr: ^2.2.5
설명: React에서 데이터를 가져오고 캐시하는 라이브러리입니다. 서버 상태를 관리하는 데 유용합니다.
util: ^0.12.5
설명: Node.js의 util 모듈을 브라우저 환경에서 사용할 수 있게 해주는 폴리필 라이브러리입니다.
vite: ^5.2.10
설명: 빠르고 경량화된 프런트엔드 빌드 도구입니다. 모듈 번들링과 개발 서버 기능을 제공합니다.
vite-jsconfig-paths: ^2.0.1
설명: Vite에서 jsconfig.json 또는 tsconfig.json 파일에 정의된 경로 별칭을 지원하도록 하는 플러그인입니다.
web-vitals: ^3.5.2
설명: 웹 성능을 측정하는 데 사용되는 라이브러리입니다. Core Web Vitals(웹 주요 지표)를 추적할 수 있습니다.
yup: ^1.4.0
설명: 폼 유효성 검사를 위한 JavaScript 객체 스키마 빌더입니다. Formik과 함께 사용하면 폼의 유효성 검사를 쉽게 처리할 수 있습니다.
"eslintConfig": {
"extends": [
"react-app",
"react-app/jest"
]
},
eslintConfig는 ESLint 설정을 정의하는 부분이다.
extends 속성은 미리 정의된 규칙 세트를 상속받아 사용할 수 있게 하는 속성이다.
현재 코드에서는 react-app과 react-app/jest 규칙 세트를 사용한다.
react-app은 react 프로젝트에서 일반적으로 사용되는 코드 스타일과 규칙이 포함되어 있다.
react-app/jest는 est 테스트 환경에 대한 ESLint 설정이다. Jest는 JavaScript 테스트 프레임워크로, 이 설정은 테스트 파일에서 사용하는 전역 변수나 Jest 관련 문법을 인식하도록 한다.
"babel": {
"presets": [
"@babel/preset-react"
]
},
babel은 javascript의 컴파일러로, 최신 javascript의 문법을 구형 블라우저나 환경에서도 동작할 수 있도록 변환해준다.
이 코드에서는 babel이 어떤 방식으로 코드를 변환할지에 대한 정보를 준다.
presets 속성은 어떤 종류의 코드 변환을 수행할지 결정하는 속성이다.
preset은 여러 babel 플러그인의 모음으로, 배열 형태로 지정된다.
@babel/preset-react는 Babel이 React 코드를 변환할 수 있게 해주는 프리셋이다. 주로 JSX 구문과 최신 JavaScript 문법(ES6+)을 변환하는 데 사용된다.
"browserslist": {
"production": [
">0.2%",
"not dead",
"not op_mini all"
],
"development": [
"last 1 chrome version",
"last 1 firefox version",
"last 1 safari version"
]
},
browserslist는 프로젝트에서 지원해야 할 브라우저의 범위를 지정한다.
production 속성은 배포용 환경에서 지원할 브러우저를 정의할 수 있는 속성이다.
(각 조건에 대한 설명, chat gpt 참조)
">0.2%"
설명: 전 세계적으로 사용 점유율이 0.2% 이상인 모든 브라우저를 지원하겠다는 의미입니다. 이 조건은 사용자가 적지만 여전히 무시할 수 없는 브라우저들을 포함하도록 합니다.
예시: 이 조건에 따라 Chrome, Firefox, Safari, Edge 등 주요 브라우저들이 포함될 가능성이 높습니다.
"not dead"
설명: 공식 지원이 중단된, 즉 "죽은" 브라우저는 제외하겠다는 의미입니다. "dead" 브라우저는 24개월 이상 업데이트가 없거나, 사용자 점유율이 거의 없는 브라우저를 의미합니다.
예시: 오래된 Internet Explorer 버전이나 더 이상 지원되지 않는 Firefox 버전 등이 제외됩니다.
"not op_mini all"
설명: 모든 Opera Mini 버전을 지원 대상에서 제외한다는 의미입니다. Opera Mini는 제한적인 기능을 가진 브라우저로, 이 브라우저에서는 많은 최신 웹 기능이 지원되지 않기 때문에 일부 프로젝트에서는 이를 제외하는 것이 유리할 수 있습니다.
development 속성은 개발 환경에서 지원해야 할 브라우저를 정의한다.
(각 조건에 대한 설명, chat gpt 참조)
"last 1 chrome version"
설명: Chrome 브라우저의 가장 최신 버전 한 가지를 지원합니다. 이 조건은 개발 시 항상 최신 버전의 Chrome을 대상으로 코드가 작성되고 동작하도록 합니다.
예시: 현재 Chrome의 최신 버전이 100이라면, 이 설정은 버전 100에 대해 코드를 최적화합니다.
"last 1 firefox version"
설명: Firefox 브라우저의 가장 최신 버전 한 가지를 지원합니다. Firefox 사용자 중 최신 버전을 사용하는 개발자에게 최적화된 환경을 제공합니다.
예시: 현재 Firefox의 최신 버전이 95라면, 이 설정은 버전 95에 대해 코드를 최적화합니다.
"last 1 safari version"
설명: Safari 브라우저의 가장 최신 버전 한 가지를 지원합니다. Safari는 MacOS와 iOS에서 주로 사용되므로, 최신 Safari 버전에 맞춰 코드를 작성하게 됩니다.
예시: 현재 Safari의 최신 버전이 14.1이라면, 이 설정은 버전 14.1에 대해 코드를 최적화합니다.
"devDependencies": {
"@babel/core": "^7.24.0",
"@babel/eslint-parser": "^7.23.10",
"@babel/plugin-proposal-private-property-in-object": "^7.21.11",
"eslint": "^8.56.0",
"eslint-config-prettier": "^9.1.0",
"eslint-config-react-app": "^7.0.1",
"eslint-plugin-flowtype": "^8.0.3",
"eslint-plugin-import": "^2.29.1",
"eslint-plugin-jsx-a11y": "^6.8.0",
"eslint-plugin-prettier": "^5.1.3",
"eslint-plugin-react": "^7.34.0",
"eslint-plugin-react-hooks": "^4.6.0",
"prettier": "^3.2.5",
"react-error-overlay": "6.0.11"
}
}
devDependencies 필드는 개발 환경에서 필요한 패키지들을 정의하며, 실제 배포될 때는 포함되지 않는다. 열된 패키지들은 주로 코드 품질 관리, 스타일링, 개발 도구와 관련된 것들이다.
(각 패키지에 대한 설명, chat gpt 참조)
@babel/core (^7.24.0)
설명: Babel의 핵심 패키지로, JavaScript 코드를 변환하는 역할을 합니다. 최신 JavaScript 기능을 구형 브라우저나 환경에서도 사용할 수 있게 변환합니다.
@babel/eslint-parser (^7.23.10)
설명: Babel을 사용한 코드를 ESLint로 분석할 수 있게 해주는 파서입니다. 이 파서는 최신 JavaScript 문법을 사용하면서도 ESLint를 통해 코드 품질을 관리할 수 있도록 돕습니다.
@babel/plugin-proposal-private-property-in-object (^7.21.11)
설명: Babel 플러그인으로, 객체 내에서의 private 필드나 메서드를 사용하는 최신 JavaScript 문법을 변환해줍니다. 예를 들어, #property 같은 private 속성 사용을 가능하게 합니다.
eslint (^8.56.0)
설명: JavaScript 및 JSX 코드의 스타일과 품질을 검사하고, 코드의 오류를 찾아주는 린팅 도구입니다. 코딩 표준을 준수하고 버그를 줄이는 데 도움을 줍니다.
eslint-config-prettier (^9.1.0)
설명: ESLint와 Prettier를 함께 사용할 때 충돌할 수 있는 규칙을 비활성화하는 ESLint 설정입니다. 이 설정을 사용하면 Prettier가 코드 포맷을 담당하고, ESLint가 다른 스타일 규칙을 관리합니다.
eslint-config-react-app (^7.0.1)
설명: Create React App(CRA)에서 사용하는 ESLint 설정입니다. React 프로젝트에 최적화된 린팅 규칙을 제공합니다.
eslint-plugin-flowtype (^8.0.3)
설명: Flow 타입 애너테이션을 린팅하기 위한 ESLint 플러그인입니다. Flow를 사용하는 프로젝트에서 타입 관련 오류를 잡아줍니다.
eslint-plugin-import (^2.29.1)
설명: ES6+ import/export 문법을 위한 린팅 규칙을 제공하는 ESLint 플러그인입니다. 불필요한 import나 export를 방지하고, 모듈 간의 의존성을 관리합니다.
eslint-plugin-jsx-a11y (^6.8.0)
설명: JSX 코드에서 접근성(a11y) 관련 문제를 잡아주는 ESLint 플러그인입니다. 웹 접근성 규칙을 준수하도록 돕습니다.
eslint-plugin-prettier (^5.1.3)
설명: Prettier와 ESLint를 통합해주는 플러그인으로, Prettier의 코드 포맷 규칙을 ESLint 규칙으로 적용할 수 있습니다.
eslint-plugin-react (^7.34.0)
설명: React와 관련된 린팅 규칙을 제공하는 ESLint 플러그인입니다. React의 베스트 프랙티스를 준수하도록 돕습니다.
eslint-plugin-react-hooks (^4.6.0)
설명: React Hooks 사용 시 발생할 수 있는 오류를 방지하고, 올바르게 사용하도록 돕는 린팅 규칙을 제공합니다.
prettier (^3.2.5)
설명: 코드 포맷팅 도구로, 일관된 코드 스타일을 유지하기 위해 사용됩니다. 여러 코드 스타일 규칙을 하나로 통합해줍니다.
react-error-overlay (6.0.11)
설명: 개발 중 발생하는 에러를 화면에 오버레이로 표시해주는 도구입니다. 주로 React 프로젝트에서 사용되며, 빠른 디버깅을 돕습니다.