private 필드는 해당 프로젝트가 npm 패키지 저장소로 발행해도 되는지 여부를 지정하기 위해 사용된다.
기본값은 false 이며 true일 경우 npm 패키지 저장소로 업로도 되는 사고가 발생할 수 있다.
description
패키지에 대한 설명이다. 사람들이 해당 프로젝트를 봤을 때 이해할 수 있도록 도움을 준다.
scripts
프로젝트에서 사용해야 하는 작업을 스크립트로 등록해놓기 위해서 사용된다.
"npm run 스크립트명" 으로 실행하며 주로 쓰이는 npm run start, npm un build 등이 정의된다.
dependencies && devDenpendencies
프로젝트에 필요한 모듈들과 정의된 모듈에 필요한 라이브러리들을 관리하기 위한 필드이다.
해당 프로젝트가 구동되기 위해선 어떤 라이브러리들이 필요한지 정의되어 있으며,
"npm install 라이브러리명 --save" 명령어를 통해 라이브러리를 다운받을 수 있다.
--save 를 통해 dependencies 에 저장할 수 있다.
dependencies 와 devDenpendencies 의 기본적 작성법은 같으며, 큰 차이점은
dev가 붙은것처럼 개발시에만 사용될 라이브러리만 저장하기 위해 사용된다.
운영 시 필요한 라이브러리들은 dependencies 에 저장하면 되고
개발 시 필요한 라이브러리들은 devDependencies 에 저장한다.
devDependencies 의 사용방법은 "npm install 라이브러리명 --save-dev" 로 사용한다.
--save 와 --save-dev 의 차이다.
package-lock.json
package.json 의 dependencies나 devDependencies 에 명시된 의존성 패키지들의
히스토리를 관리해주는 파일이다.
보통 패키지의 버전은 [Major].[Minor].[Patch] 와 같은 방식으로 정의된다.
해당 패키지에 1.0.0 이라는 버전의 패키지가 설정되어 있더라도 Minor 와 Patch 는 언제든지
업데이트 될 수 있다.
package.json 의 dependencies 에 1.0.0 으로 설정되어 있더라도 1.1.0 이나 1.0.1 과 같은
업데이트된 버전이 설치될 가능성이 있다.
이러한 경우 여러 개발자들의 다른 개발환경에 예기치 못한 오류가 발생할 수 있다.
이때 필요한게 package-lock.json 파일이다. package.json 의 버전이 바뀌더라도
package-lock.json 파일이 작성된 시점의 의존성 트리가 다시 생성될 수 있게끔
보장하는것이다.
node_modules
해당 프로젝트에 필요한 라이브러리들을 설치하면 node_modules 에 다운로드 된다.
특정 경로를 지정하지 않고 외부 모듈을 import 하게 되면 node_modules 에서 찾는다.
public/
index.html 과 index.html 에서 사용될 "정적 파일"들이 위치하는 곳이다.
public/index.html
브라우저에 표출되는 파일이다.
public/index.html 파일은 index.html 이라는 이름을 사용해야 한다. 변경을 하려면 따로 서버 설정이 필요하다.
public/ 폴더 내의 파일들은 public/index.html 에서만 사용할 수 있다.
<html>
...
<body>
<noscript>You need to enable JavaScript to run this app.</noscript>
<div id="root"></div>
</body>
</html>
public/manifest.json
웹앱 메타데이터입니다. 화면에서 보여지는 앱 이름, 아이콘, 디스플레이 유형 등 설정할 수 있다.
public/robots.txt
웹 크롤러를 위한 정보입니다.
disallow 옵션에 특정 URL 을 추가하면 공개적으로 사용할 수 있지만 검색 엔진에는 인덱싱되지 않는다.
src/
src/ 내부에 위치한 파일들은 webpack에 의해 재빌드된다. src/ 파일 외부에 위치하는 JS, CSS 파일들은
webpack 이 찾을 수 없으므로 빌드에 필요한 파일들은 src/ 내부에 위치시킨다.
src/index.js
public/index.html 파일과 같이 src/index.js 는 해당 이름으로만 사용 해야하며, 변경 시 설정파일 변경이 필요하다.
import React from 'react';
import ReactDOM from 'react-dom/client';
import './index.css';
import App from './App';
import reportWebVitals from './reportWebVitals';
const root = ReactDOM.createRoot(document.getElementById('root'));
root.render(
<React.StrictMode>
<App />
</React.StrictMode>
);
reportWebVitals();
import React from 'react'; import ReactDOM from 'react-dom/client'; import './index.css'; import App from './App'; import reportWebVitals from './reportWebVitals';