오늘 배운 node.js, git, github에 대해 다시 정리하면서 적어보려고 한다.
먼저, node.js 에 대한 정의를 알아보자.
Node.js는 JavaScript로 브라우저 밖에서 서버를 구축하는 등의 코드를 실행할 수 있게 해주는 런타임 환경이다. 빈번한 I/O 처리에 있어서 우수한 성능, 서버 확장의 용이성 그리고 JavaScript언어로 작성할 수 있다는 점에서 프론트엔드에서 엄청많은 사용을 하고있다.
Node.js 는 홈페이지에 들어가서 가장 최신버전과 LTS버전을 볼 수 있다.
nvm install 버전
을 입력하여 해당 버전의 node.js를 설치할 수 있다.
package.json
이란 남이 만들어 놓은 모듈을 node.js 에서는 npm 모듈이라고 부르며, 이에 대한 정보를 담아둔 곳이 package.json이다.
node.js 환경에서 외부 라이브러리를 다운로드하는 대표적인 방법이 npm이다.
npm= Node Package Manager 로 일종의 앱스토어라고 생각하면 된다.
필요한 모듈을 다운로드할 수 있는 모듈들이 모여있다.
package.json에는 해당 프로그램을 실행시키기 위해 필요한 모듈들이 무엇인지, 프로그램을 실행시키는 방법, 프로그램을 테스트하는 방법 등이 명시되어있다.
🚨 주의 : 해당 프로그램을 실행시키기 위해 필요한 실제 모듈은 node_modules 라는 폴더에 저장이 된다. package.json에는 어떤 모듈인지만 적혀 있다.
devDependencies : 어떤 개발을 할때, 보조해주는 라이브러리들이 저장이 된다. 즉, 로직과는 직접적인 연관이 없는 라이브러리들이 저장이 되는 것이다. 보통 devDependencies에 설치를 하려고 할때는 npm install 라이브러리명 -D
로 설치를 한다. 뒤에 -D
를 붙이면 dev에 넣겠다는 말인 것이다. prettier
, eslint
등이 대표적인 예시이다.
dependencies : 프로젝트 작업 중에 npm install 라이브러리명
명령어를 통해서 설치한 라이브러리들이 들어가 있다. 배포할 때 사용할 라이브러리들이 담겨 있는곳이라고 보면된다. 즉, 동작을 도와주는 라이브러리들이기 때문에 배포할 때 포함을 시켜줘야한다. react
, underscore
등이 대표적인 예시다.
⭐️ 결국 devDependencies 와 구분하는 이유는 배포할 때 빌드 시간도 줄이고, 불필요한 라이브러리를 포함시키지 않으려 구분을 한다.
script : 반복적으로 수행해야하는 스크립트를 등록해놓을 수 있다.
스크립트를 등록할 때는 package.json을 열고 직접 편집할 수도 있으나 그러면 오타의 위험이 있어서 가급적 npm set-script {스크립트 이름} {명령어}
명령어를 사용하는 것을 추천한다.
예를 들어, 콘솔에 Hi!
를 출력해주는 명령어를 실행해주는 hi
라는 스크립트를 추가하려면 npm set-script hi "echo 'Hi!'"
를 입력하면, package.json
파일에 hi
라는 스크립트가 추가되어있을 것이다.
등록한 스크립트를 실행하려면 npm run 스크립트이름
으로 실행을 할 수 있다.
🔗 Git이란 무엇일까??
Git은 분산 버전 관리 시스템(DVCS)의 일종이며, 형상 관리 도구(CMT)라고도 불린다. 주로 소프트웨어를 개발하는 소스 코드를 효과적으로 관리할 수 있게 도와주는 무료 오픈 소프트웨어이다.
깃은 DVCS의 일종이기 때문에 중앙 저장소가 손상되어도 로컬 저장소를 이용하여 원상복구가 가능하다. 또한 로컬 저장소에서 개발을 진행할 수 있기 때문에 인터넷 연결이 필요하지 않아도 되며, 각각의 개발자들이 브랜치(branch)를 통해 개발한 후 합치는(merge) 방식으로 진행할 수 있기 때문에 협업도 쉬워진다.
Branching and Merging : 깃은 브랜치(branch)와 합병(Merge)이라는 개념이 있다. 간단하게 소개하자면 브랜치는 말 그대로 가지(branch)라고 볼 수 있다. 나무에서 여러 갈래로 가지가 뻗어나가는 것처럼, 소스 코드도 여러 개의 가지를 뻗어나갈 수 있다. 새로운 아이디어를 적용시켜보거나, 버그를 고치거나, 이전 버전으로 돌아가거나, 패치를 적용시키거나... 많은 가지들을 만들 수 있으며 이것을 합칠(merge) 수 있다.
Small and Fast : 깃은 빠르다. 깃은 거의 모든 동작이 로컬에서 진행되기 때문에 다른 VCS처럼 서버와의 통신에 많은 비용을 들이지 않아도 된다. 또한, 깃은 C언어로 작성되어 있어 속도가 빠르다. 깃의 주요 디자인 목표가 속도와 성능이라고 한다.
Distributed : 깃은 분산되어 있다. 사용자는 전체 저장소를 복제(clone)해서 로컬 저장소로 가져온다. 이는 수많은 백업들이 분산되어 저장되어 있다는 뜻이다. 따라서 중앙 저장소의 장애를 극복하기 쉬워진다.
깃은 분산되어 있기 때문에 쉽게 수 많은 workflow를 가질 수 있다.
Staging Area : Staging Area는 커밋이 일어나는 곳으로 커밋이 일어나기 전 검증을 할 수 있는 곳이다. 커밋은 이 Staging Area에서 Repository(저장소)로 파일을 보내는 것을 의미한다. 따라서 커밋 할때 코멘트를 통해 누가 어떤 파일을 추가, 수정, 삭제했는지도 확인이 가능하다.
macOS를 기준으로 homebrew를 통해 git을 install하고,
사용자 이름과 이메일 주소를 설정하는 것이다. 터미널 화면에 다음과 같이 입력해주면 된다.
$ git config --global user.name "나의 사용자 이름"
$ git config --global user.email "내 이메일 주소"
입력하고 난뒤, git config --list
를 통해 입력한 이름과 주소가 잘 들어갔는지 확인을 할 수 있다.
🗄️ Github란 무엇인가??
깃허브는 소프트웨어 개발 프로젝트를 위한 소스코드 관리서비스(원격 저장소) 입니다. 소스코드 열람 및 간단한 버그정리, 버전관리 그리고 sns기능도 있는 호스팅 플랫폼 서비스입니다. 그래서 함께 개발한 소스코드를 공유할때 또는 상대로부터 받은 코드를 수정할때 굉장히 유용하게 쓰입니다. 즉, 깃을 활용해서 짠 코드를 공유할 수 있는 공간이라 생각하면 됩니다.
npm === 앱스토어!✨