Node.JS 란? + NVM, NPM 그리고 GIT

honeyricecake·2022년 7월 30일
0

자바스크립트

목록 보기
6/20

Node.JS 란?

Chrome V8 JavaScript 엔진으로 빌드된 JavaScript 런타임
(런타임이란 프로그래밍 언어가 동작하는 환경을 말한다.)

Node.Js가 동작하는 환경은 크게 컴퓨터와 브라우저 두가지가 있다.

NVM을 이용해 원하는 버전을 설치하고 사용할 수 있다.
여러개의 버전을 설치하고 그 중 하나를 선택해서 사용할 수도 있다.

NPM(Node Package Manager) : 전세계의 개발자들이 만든 다양한 기능(패키지, 모듈) 등을 관리

명령어들을 미리 적어놓을 수 있다.

우리가 어떤 모듈을 npm install 이라는 명령어를 이용해 터미널로 설치했을 때 다른 모듈들도 node_modules 폴더에 함께 보이는 것을 볼 수 있다.

그 이우는 그 모듈을 사용하는데 필요한 다른 패키지들도 함께 설치되었기 때문이다.

실재 설치한 모듈의 json파일에서 dependencies 항목을 보면 그 모듈을 활용하는데 필요한 다른 모듈들 역시 명시되어 있다.

그리고 한번 설치한 패키지는 package.json파일에도 내역이 남게되고 이를 삭제하더라고 npm install 명령어로 dependencies 항목에 있는 모듈들을 다시 설치할 수 있다.

이 때 package.json 파일은 내가 직접 관리를 하는 파일이고
package.lock.json 파일은 자동으로 관리되는 파일이다.
(내가 설치한 모듈들이 어떤 모듈들이 필요한지 등등의 정보가 자동으로 관리)

그리고 설치할 때
뒤에 -D를 붙이면 package.json파일의 dev dependecies 항목에
그렇지 않으면 그냥 dependencies항목에 추가가 되는데 그 이유를 알아보자.

개발용 의존성 패키지를 설치할 때 -D가 붙는데 개발용 의존성 패키지란 개발할 때만 필요한 거고 웹브라우저에서 직접적으로 동작하지는 않는다는 으미이다.

그와 반대되는 일반 의존성 설치는 웹브라우저에서 직접 동작하는 모듈을 설치하는 것이다.

scripts 항목에 명령어를 만들어 실행할 수 있다.

ex.

이 때 parcel-bundler가 로컬 호스트에서 프로젝트를 실행할 수 있게 도와주느넫
빌드룰 하지 않고 열면 기존의 프로젝트 그대로 실행하고
build를 하면 웹브라우저에서 동작할 난독화된 코드를 생성하여 실행한다.

이 때 bundle은 우리가 프로젝트 개발에 사용한 여러가지 모듈을 하나로 묶어내는 작업을 말한다.

이렇듯 parcel-bundler는 웹페이지가 실행되는데 영향을 준다기보다는 개발용이므로 -D를 붙인다.

유의적 버전
(Semantic Versioning, SemVer)
유의하다, 즉, 뜻이 있다는 의미이다.

ex. 12.14.1 버전에서 12는 Major, 14는 Minor 1은 Patch버전을 뜻한다.
Major는 기존 버전과 호환되지 않는 새로운 버전을 의미한다.

Minor 버전은 기존 버전과 호환되는 새로운 기증이 추가된 버전이다.

Patch버전은 기존 버전과 호환되는 버그 및 오타 등이 수정된 버전이다.

^이란 기호는 Major 버전 안에서 가장 최신 버전으로 업데이트가능하다는 뜻이다.

ex. ^12.14.1 버전은 Major버전은 12로 유지하면서 최신버전으로 업데이트 가능하다는 의미이다.

원하는 버전의 모듈 설치하는 명령어

npm install "원하는 모듈"@"원하는 버전"

업데이트하는 명령어

npm update "원하는 모듈"

단, 이 명령어는 앞에 ^이 붙어 있을 때만 유지된다.
이 ^은 Major버전은 유지하면서 Minor버전, patch버전은 최신으로 업데이트한다는 의미이고 ^을 떼면 버전을 고정한다는 의미라서 위의 명령어를 실행해도 업데이트되지 않는다.

NPM 프로젝트의 버전 관리

참고 링크
https://june98.tistory.com/23

현재 경로의 package.json에 명시된 모듈들을 npm 생태계에서 가져와 설치하는데는 npm install 명령어만 치면 된다.

이렇게 하면 node_modules라는 폴더가 생성이 된다.

그리고 npm run build 명령어를 사용하면 배포 버전이 만들어지면서 cache와 dist 폴더가 만들어진다.
그러므로 이들 폴더는 직접 깃허브에 push해주지 않아도 된다.

그리고

터미널을 wsl로 열어서
git init 을 해주어 깃저장소를 초기화한다.
git init을 해주면 일반폴더를 깃 명령어를 사용할 수 있게 만들어준다.

잠시 git에 대해서 알아보자.

git은 간단하게 로컬 버전 관리 시스템이다.

버전 관리 시스템은 거창한 것을 말하는 게 아니라 내가 수정했던 내용들, 과거의 히스토리를 모두 기록해두는 것을 말한다.

반면 github는 로컬이 아니라 클라우드에서 관리되는 버전 관리 시스템이다.

git status 는 현재 git에서의 상태를 나타낸다.
처음에 git init후 git status로 확인을 해보면

이런 식으로 뜬다.

그 의미는 이는 아직 Local 의 Working directory애 Untracked된 파일들이라는 것이다.

그래서 이 파일들을 git add . 을 통해 add하면 하위 폴더의 모든 파일들이 add 된다.

단, .gitignore에 적어놓은 파일들은 무시된다.

이렇게 add하고 나면
이들은 Staging Area라는 곳으로 이동하게 된다.
이 곳은 commit할 준비가 된 파일들을 .Git directory에 저장하기 전에 대기하는 장소이다.

이 떄 staging에 있는 파일을 수정하면
수정되지 않은 것은 그대로 staging 에 있고 수정된 파일은 Working Directory의 Tracked에 위치하게 된다.

참고하자.

git commit에는 크게 세가지 종류가 있다.

그리고 이를 Github에 올리려면 레포지토리를 만들어서

git remote add origin 레포지토리 링크 를 하면 된다

긜고 이렇게 연결한 링크에

git push origin master를 하고 아이디와 토큰을 입력하면 push가 된다.

특정 저장소를 삭제하고 싶다면 Settings에서 Delete this repository를 하면 된다.

NPM 프로젝트(예제)의 패키지 버전 일치시키기

package.json 에는 프로젝트에서 직접 사용하는 모듈들이 명시되어 있고
package-lock.json 에는 그 모듈들에서 사용하는 모듈들이 명시되어 있다.

그래서 예제에서 사용하는 package.json과 package-lock.json을 가져와서 사용하면 버전이 일치하지 않는 문제가 사라진다.

0개의 댓글