Npm vs Npx

KwonSungMin·2023년 9월 6일
0

개인적인 FE 정리

목록 보기
4/9

NPM

npm은 node package manager 라는 말 그대로 패키지 관리자이다. 사용하려면 Node.js를 설치해야합니다.

npm install을 실행함으로써 package.json파일에 의존성들(packages)을 지정할 수 있다는 걸 말합니다.

  • 라이브러리를 담고 있는 repository 역할
    • npm install 시 local/global로 나뉨
    • local로 다운 받아지면 프로젝트 내 node_modules에 다운 받아짐
    • global로 다운 받아지면 (npm install ... -g) 프로젝트 내 뿐만 아니라 컴퓨내 내에 받아지게 됨
      • window: bin/ 안에
      • Linux: /user/local/bin 안에
  • npm에 관련된 것은 package.json에 정의되어 있음 ex) npm install bcrypt 하면 dependencies에 추가 됨
 "dependencies": {
    "bcrypt": "^5.0.1",
    "body-parser": "^1.19.0",
    "cookie-parser": "^1.4.5",
    "express": "^4.17.1",
    "jsonwebtoken": "^8.5.1",
    "mongoose": "^5.8.5"
  },
  • 어플리케이션을 실행 시킬 때 npm run start or 배포 시킬 때 빌드 시 npm run build

npm을 사용하면 생기는 단점

모듈이 업데이트 되었는지 안되었는지 확인이 불가능 합니다.

모든 프로젝트마다 모듈을 재설치 하는것이 아닌, 한 번 설치한 모듈을 그대로 사용하기 때문에 프로그래머가 의식해서 글로벌 모듈을 최신 버전으로 재 설치하지 않으면 확인 자체가 불가능 합니다.이게 장점이 될수도 있지만 단점이 될 수 도 있습니다.

업데이트를 진행했을 때 변동사항이 생겨 다른 프로젝트에도 영향을 끼칠 수 있습니다.

프로젝트를 3개를 운영하는데, 같은 모듈의 각각 다른 버전이 필요한 상황이 있을 수 있습니다. 이럴 때 글로벌 모듈의 버전은 당연히 한 개이기 때문에 문제가 발생하게 됩니다.

create-react-app 같은 보일러플레이트에는 치명적입니다.

리액트 프로젝트 생성 도구인 create-react-app 같은 모듈의 경우, 변경사항이 꽤나 잦은 모듈입니다. 그렇기 때문에 매 설치 전마다 npm으로 재 설치를 하지 않는 경우에는 이전 버전을 사용할 여지가 꽤 있습니다.

이런 프로젝트 생성 모듈은 매 업데이트마다 새로운 기능과 다양한 버그들이 고쳐집니다. 그리고 이런 보일러플레이트 같은 경우에는, 항상 최신 버전을 유지해 주는 것이 좋은데, 매번 설치하는 것이 꽤나 귀찮은 일입니다.

Npx란

npm5.2버전부터 깔려있는데, execute npm package binaries의 줄임말로,

 node 패키지를 실행시키는 하나의 도구이다.

  • npm 레지스토리에 올라가있는 패키지를 쉽게 설치하고 관리할 수 있도록 도와주는 CLI도구
  • 원래는 create-react-app 할 때 npm install -g create-react-app 으로 함 → global 디렉토리에 다운 받음
  • 이제는 npx를 이용하여 npm node reposistory에 있는 것을 찾아서 다운로드 없이 가져와 쓸 수 있음
  • 따라서 disk space 낭비하지 않음 & 항상 최신 버전을 사용할 수 있음

참고자료

https://ljh86029926.gitbook.io/coding-apple-react/undefined/npm-npx#.-2

https://velog.io/@wheezy_han/npm-vs-npx

profile
천천히

0개의 댓글