본문 바로가기
CodeIt_Sprint/자바스크립트_모듈

(4)자바스크립트_모듈_서드파티 모듈의 package-lock.json 존재의 이유, 알아두면 좋은 npm 터미널 명령

by 코잼민 2024. 12. 1.

● 다음 아래의 상황을 이해해보자.

보통 어떤 프로젝트에 대해, 협업을 할 떄, 자기 자신과 협업자는 프로젝트를 주고 받을 때, 똑같은 환경에서 받는 것이 좋다.

그리고, 협업을 하게되면, 보통 모든 파일을 주고 받는 것이 아닌, package.json을 주고 받고, 터미널에서 ""npm install" 을로 설치하여, 용량을 작게 하여, 주고받는데,

- 상황_ package.json만 주고 받아 협업을 하는 경우 :

=> 결과 : 정확히 똑같은 버전의 서드파티 모듈을 사용하는지는 알 수 없다.

=> 이유 :

  • package.json의 dependencies 필드 : Sementic-version의 값이 범위로 주어지기 때문
  • 반면, package-lock.jsondependencies 필드 : 정확한 node_modules의 버전이 기재되어있다.

따라서, 협업자와 내가 프로젝트 협업시, 똑같은 환경에서 협업을 하고 싶다면, package-lock.json과 package.json을 함께 주고 받아 "npm install"을 해야 한다.

◎ 연습문제 :

질문 1

Node.js에서는 package.json 파일이 있는 디렉토리를 _____ 라고 부릅니다. 모든 서드파티 모듈 디렉토리에도 package.json 파일이 있기 때문에 서드파티 모듈도 하나의 _____ 입니다.

_____에 들어가야 할 한국어 단어를 작성하세요.

- 답 : 패키지

질문 2 

package.json 파일의 _____ 필드는 현재 패키지에 필요한 서드파티 모듈을 기록하는 필드입니다.

_____에 들어가야 할 영어 단어를 작성하세요.

- 답 : dependencies

질문 3

package.json 파일에 scripts 필드가 아래와 같이 정의돼 있습니다.

{
  "scripts": {
    "server": "node server.js",
  },
  // ...
}

server라는 커맨드를 통해 서버 프로그램을 시작할 수 있도록 필드를 정의했는데요. 서버를 시작하고 싶을 때 입력해야 할, npm으로 시작하는 커맨드를 작성해 주세요.

- 답 :

npm run server

질문 4

다음 설명 중 틀린 것을 고르세요.

1. Node.js 프로젝트 코드를 공유할 때는 서드파티 모듈 코드(node_modules)를 직접 공유할 필요는 없다.

2. package.json 파일이 있는 위치에서 npm install을 하면 dependencies 필드에 있는 서드파티 모듈들이 설치된다.

3. package.json 파일은 버전 범위를 주로 기록하지만 package-lock.json 파일은 현재 설치된 서드파티 모듈들과 버전을 정확히 기록한다.
 
4 . package.json만 있어도 필요한 서드파티 모듈을 설치할 수 있기 때문에 package-lock.json은 사실상 필요가 없다.

- 답 : 4번

● 알아두면 좋은 터미널 명령어들

§분류1_ npm install

○명령어1_ 특정 버전을 설치하고 싶을 때, => npm install + "@"

npm install 패키지이름@version

○명령어2_ 패키지를 import없이, 터미널에서 불러와 사용하는 명령어 => npm install + "패키지 이름 --global"

npm install 패키지이름 --global

○명령어3_ 터미널로 패키지를 실행하기 => 패키지이름 + main.mjs

패키지이름 main.mjs

○명령어4_패키지를 디버깅툴이나 테스트의 패키지 설치할 때, npm install 패키지이름 + "--save-dev" //솔직히 뭔말인지 모르겠는데 일단 ㅇㅋ

§분류2_ npm list

○명령어5_ npm list : 현재 디렉토리 내 설치된 모든 패키지를 출력

npm list

○명령어6_ npm list -g : 내 컴퓨터의 모든 디렉토리에서 설치된 모든 패키지 출력

npm list -g

§분류3_ npm update

○명령어7_ npm update : 현재 디렉토리의 모든 패키지 업데이트

npm update

○명령어8_ npm update 특정 패키지 : 특정패키지만 최신 버전으로 업데이트

npm update 특정패키지이름

○명령어9_ npm update -g : 내 컴퓨터의 모든 패키지들을 최신버전으로 업데이트

npm update -g

○명령어10_ npm update -g  패키지이름: 내 컴퓨터의 전역에 있는 특정 패키지 모두 업데이트

npm update -g 패키지이름

§분류4_ npm uninstall : == delete

○명령어11_ npm uninstall 패키지 이름 : 현재 디렉토리의 특정 패키지 삭제

npm uninstall 특정패키지이름

○명령어12_ npm uninstall -g 패키지 이름 : 내 컴퓨터에 있는 모든 특정 패키지 삭제

npm uninstall -g 특정패키지이름