npm init react-app 원하는_리액트_폴더명
원하는_리액트_폴더명
으로는 리액트에 필요한 모든 파일 및 폴더가 설치되는 폴더를 만드는 것이다.yarn
으로 설치하는 방법이 있고,npm
으로 설치하는 방법이 있다. 어느쪽을 사용해도 좋으나 여기서는 npm으로 설치하는 방법을 사용하도록 한다.
cd 원하는_리액트_폴더명
- 원하는 폴더 안의 경로로 터미널의 명령 실행 위치를 이동한다.
ls
- 현재 명령을 실행하는 경로에 있는 모든 파일 및 폴더 리스트를 확인한다.
README.md package.json node_modules
public package-lock.json src
- 위와 같이 파일 및 폴더 리스트가 나올 것이다.
ls -a
.
으로 시작하는 파일은 윈도우로 치면 숨김 파일에 해당한다. 숨김 파일을 보기 위해서는-a
옵션을 사용해 줘야 한다.
. README.md public
.. node_modules src
.DS_Store package-lock.json
.gitignore package.json
. README.md public
.. node_modules src
.DS_Store package-lock.json
.gitignore package.json
- 각 파일 및 폴더에 대한 기능은 리액트를 배우면서 알게되므로 간략한 설명만 한다.
- 현재 폴더를 의미한다.
pwd
cd .
pwd
cd .
은.
경로로 이동하겠다는 의미이다.pwd
는 터미널에서 명령이 실행되는 경로를 알려 준다. 첫 번째pwd
를 입력했을 때와 두 번째pwd
를 입력했을 때가 같다는 것을 알 수 있다.cd .
전후의 경로가 같다는 것은.
가 현재 폴더를 의미하는 것을 알 수 있게 해 준다.
- 한 단계 상위 폴더를 의미한다.
pwd
cd ..
pwd
- 상위 폴더로 갔으므로 다시 한 단계 아래의 이전 폴더로 이동하자
cd 원하는_리액트_폴더명
Apple macOS 운영 체제에서 .DS_Store는 폴더 보기 옵션, 아이콘 위치 및 기타 시각적 정보 등 포함한 폴더의 사용자 지정 속성을 저장하는 파일입니다.
- 위키의 설명을 보면 폴더 설정을 저장하는 용도로 사용하는 파일이다. 프로젝트의 코드와는 별 관계가 없는 파일이며 다른 사용자의 맥OS에서는 맥OS의 폴더 설정이 다르게 되어 있을 것이고
.DS_Store
의 설정값 차이로 충돌이 발생할 수 있다. 이런 일을 방지하기 위해서git
을 사용할 때 git에 의해 파일이 추적되지 않도록.gitignore
에.DS_Store
를 추가해 줄 필요가 있다..gitignore
기본적으로 추가되어 있다.
git
은.git
파일이 있는 폴더의 파일과 하위의 파일들의 변경 사항을 추적하는 기능을 제공하고git
을 통해서github
에 파일을 올릴 수 있다..gitignore
은git
에 파일의 변경사항이 추적되지 않도록 하는 기능이 있다.git
에 의해 파일의 변경사항이 추적되는github
와 같은 저장소에 파일을 올릴 수 있기 때문에github
에 파일을 올리고 싶지 않은 경우.gitignore
에 파일 및 폴더 경로를 추가해 주면 된다.- 한 번
git
에 의해 변경사항이 추적된 상태에서github
에 파일을 올리게 되면 추적에서 배제하기 어렵거나 거의 불가능하게 되는 경우가 있으므로 민감한 파일들은 반드시git
에 의해 추적이 되기 전에.gitignore
에 등록 해 줘야 한다. - 비쥬얼 스튜디오 코드에서는
.gitignore
에 의해 등록된 파일 및 폴더는 EXPLOER의 파일 및 폴더 리스트에서 반투명의 회색으로 표기되어 있다.node_modules
폴더를 보면 색이 흐릿한 회색이다.
github
리포지토리에서 어떤 폴더 경로의 페이지에 접근할 때 화면에 게제하고자 하는 글을 폴더 경로의README.md
라는 파일에 적는다.
- NodeJS의 패키지의 라이브러리 코드가 들어 있는 폴더이다.
- 리액트는 노드JS 라이브러리이다. 리액트로 애플리케이션을 만들 때는 리액트 라이브러리 뿐만 아니라 다양한 자바스크립트 라이브러리를 사용해야 한다. 라이브러리를 설치할 때 저장되는 장소가
node_modules
폴더이다. - 주의할 점 :
node_modules
는 git에 의해 추적이 되면 안 된다. git에 의해 추적이 되지 않는다는 말은 github에 올리지 않는다는 의미이다.node_modules
은 용량이 아주 크다 수백 메가바이트에서 몇 기가바이트에 (혹은 그 이상) 이른다. github에는 한 달에 올릴 수 있는 파일의 용량이 정해져 있으며,node_modules
와 같이 큰 용량의 파일을 올리게 되면github
에 올리지 못하는 일이 생길 수 있다. github
에서 코드를 다운 받을 때node_modules
이 없으므로npm install
등의 명령어를 사용해서package.json
또는package-lock.json
의 라이브러리 정보를 바탕으로 다운로드한다. 이 때 라이브러리는github
가 아닌 라이브러리를 관리하는 저장소에서 다운로드 한다.
- 라이브러리는 점점 기능이 추가되고 버그가 수정이 된다. 라이브러리의 코드의 변경에 따라서 버전이 증가하고 버전에 따라서 기존에 지원하던 기능이 더 잘 될 수도 있고 버그가 생겨서 작동이 안 되는 경우도 생길 수 있다.
- 라이브러리의 버전에 따라서 기존에 잘 동작하던 기능이 동작이 되지 않을 수 있기 때문에 라이브러리의 버전을 고정해서 이전에 사용했던 라이브러리와 동일한 라이브러리를 사용할 수 있게 하기위한 것이다.
package.json
는 프로젝트에 설치되는 라이브러리의 버전 정보를 기록하는 곳이다.npm install
명령을 실행하면package.json
의 라이브러리 정보에 따라서 패키지를 다운로드해서node_modules
폴더 안에 저장한다.
package.json
에는 라이브러리의 버전을 엄격하게 고정하지 않을 수 있다. 어떤 라이브러리의 버전이3.2.1
이라고 할 때,3.2.*
으로 등록이 되어 있으면3.2.1
을 설치할 수도 있고3.2.2
를 설치할 수도 있다. 설치 가능한 최신 버전을 설치하려고 하기 때문에 처음 설치했을 때의 버전과 나중에 다시 라이브러리를 설치했을 때의 버전의 차이가 발생할 수 있다.- 어떤 라이브러리를 설치할 때 자동으로 라이브러리의 버전을 고정하여 기록하는 곳이
package-lock.json
이다. - 또한 사용자가 직접 라이브러리를 설치해서 개발에 이용하는 것 뿐만 아니라, 라이브러리를 만드는 사람도 다른 라이브러리를 사용해서 만들 라이브러리를 만든다.
- 사용자가 설치한 라이브러리의 버전은 고정되어 있어도, 사용자가 직접 설치하지는 않았지만 라이브러리를 설치할 때 설치된 라이브러리가 사용하고 있는 다른 라이브러리의 버전은 고정되어 있지 않은 경우가 있다.
package-lock.json
파일에는 한 번 설치한 라이브러리를 만들 때 라이브러리가 사용한 라이브러리의 버전 정보도 포함되어 있기 때문에 라이브러리가 사용하는 라이브러리의 버전이 달라서 코드 동작이 달라질 가능성을 차단한다.package-lock.json
파일이 없더라도package.json
만 있어도npm install
명령을 통해서 라이브러리를 다운 받을 수 있으며,package-lock.json
파일이 있으면package.json
의 버전 정보보다 우선적으로 확인되어 라이브러리를 다운로드한다.
npm start
명령을 사용하면 리액트 서버가 실행 된다.http://localhost:3000
(이 경로는 설정에 따라 다를 수 있다.) 이 경로로 접근을 하면 리액트 자바스크립트를 로드하기 위한 태그 구조가 포함되어 있는index.html
의 태그 구조를 가진 HTML이 로드된다.- 이 때
index.html
파일이 직접 로딩되는 것이 아니라,index.html
파일의 태그 구조를 사용해서 웹 페이지의 HTML을 리액트 서버가 직접 만들어서 제공해 주는 방식이다. - 태그 구조를 사용하기 때문에 몇 가지 바꿀 수 있는 부분을 제외하고는 건드리지 않는 편이 좋다.
- 리액트를 애플리케이션을 만들기 위한 자바스크립트 코드를 정의하는 곳이다.