HomeAboutMeBlogGuest
© 2025 Sejin Cha. All rights reserved.
Built with Next.js, deployed on Vercel
🤩
개발
/
NodeJs
NodeJs
/
패키지 매니저(node package manager)

패키지 매니저(node package manager)

package.jsonnode_modulespackage-lock.jsonnpm 명령어npm initnpm auditnpm install —save-devnpm install —global (전역 설치)npx (전역 설치하지 않고 전역 설치한 것처럼 실행하기)npm install [저장소 주소]npm —prefix [package.json 경로] install제거,세부 정보 파악, 로그인명령어 줄여쓰기패키지 버전 이해하기패키지 버전에 붙어 있는 문자( ^, ~, >, <)Unable to resolve dependency treenpm 버전이 달라, 똑같은 package.json으로 아래 에러 발생

package.json

  • 프로젝트에서 설치한 패키지들의 버전을 기록해두는 파일
  • npm install 수행 시, 해당 파일을 참고하여 의존성을 설치하게 됨. node_modules는 관리할 필요 없음.

node_modules

  • 설치한 패키지들이 들어있는 폴더

package-lock.json

  • 직접 설치한 모듈 외에도 node_modules에 들어 있는 패키지들의 정확한 버전과 의존 관계가 담겨 있음

npm 명령어

[ npm 공식문서 CLI Commands ]

npm init

npm init // package.json 파일을 만들어주는 명령어 { "dependencies": { "ndb": "^1.1.5" }, "name": "ch4-3", "version": "1.0.0", "description": "node.js start ch4.3", "main": "cookie2.js", "devDependencies": {}, "scripts": { "test": "echo $PATH" }, "author": "geuno", "license": "ISC" }
npm init 으로 명시하는 값들
  • package name : 패키지의 이름 (package.json 의 name)
  • version : 패키지의 버전
  • entry point : 자바스크립트 실행 파일 진입점. 보통 마지막으로 module.exports를 하는 파일을 지정함 (package.json의 main 속성에 저장)
  • test command : 코드를 테스트할 때 입력할 명령어를 의미함 (package.json scripts 속성 안의 test 속성에 저장됨)
  • git repository : 코드를 저장해둔 깃 저장소( package.json의 repository 속성)
  • keyword : npm 공식 홈페이지에서 패키지를 쉽게 찾을 수 있도록
  • license : 해당 패키지의 라이선스
  • scripts안의 test를 실행하기 위해서는 npm test 로 실행하면 됨
 

npm audit

💡
audited [숫자] packages 패키지에 있을 수 있는 취약점을 자동으로 검사했다는 의미임 found [ 발견 숫자 ] [ 심각도 ] severity vulnerabilities run ‘npm audit fix’ to fix them, or ‘npm audit’ for details
  • npm audit은 패키지의 알려진 취약점을 검사할 수 있는 명령어임
  • npm audit fix : npm이 스스로 수정할 수 있는 취약점을 알아서 수정함

npm install —save-dev

  • 개발용 패키지를 설치하는 명령어
  • 실제 배포 시에는 사용되지 않고 개발 중에만 사용되는 패키지임
  • package.json에서 devDependencies로 관리됨

npm install —global (전역 설치)

  • npm 이 설치되어 있는 폴더에 패키지를 설치함 → 터미널에서 사용가능

npx (전역 설치하지 않고 전역 설치한 것처럼 실행하기)

💡
전역 설치한 패키지는 package.json에 기록되지 않아 다시 설치할 때 어려움이 따르기에, 이러한 경우를 위한 명령어로 npx가 있음
npm install --save-dev rimraf npx rimraf node_modules
devDependencies에 기록한 후, npx를 통해 실행시키면 전역 설치한 것과 같은 효과를 얻을 수 있음

npm install [저장소 주소]

  • npm에 등록되지 않은 패키지는 깃허브 저장소 주소를 명시함으로 설치할 수 있음

npm —prefix [package.json 경로] install

  • package.json 파일이 현재 폴더에 있지 않고 다른 경로에 있을 때, 명시하여서 npm 을 실행시킬 수 있음

제거,세부 정보 파악, 로그인

  • npm uninstall(npm rm) : 패키지 제거
  • npm info : 패키지 세부 정보 파악
  • npm adduser : npm 로그인을 위한 명령어
  • npm list <library 이름> : 해당하는 라이브러리의 버전과 의존하는 라이브러리들의 버전을 알려줌

명령어 줄여쓰기

  • npm install → npm i
  • —save-dev → -D
  • —global → -g

패키지 버전 이해하기

SemVer 방식의 버전 넘버링을 따라서, 패키지의 버전은 항상 세 자리로 이루어져 있음
Given a version number MAJOR.MINOR.PATCH, increment the:
  1. MAJOR version when you make incompatible API changes
  1. MINOR version when you add functionality in a backwards compatible manner
  1. PATCH version when you make backwards compatible bug fixes
  • 첫번째 자리 → major
    • major 버전이 0이면 초기 개발 중
    • 1부터 정식 버전
    • major 버전은 하위 호환이 안 될 정도로 패키지의 내용이 수정 되었을 때 올림
    • 1.5.0 → 2.0.0 으로 올리게 되면 에러가 발생할 확률이 큼
  • 두번째 자리 → minor
    • minor 버전은 하위 호환이 되는 기능 업데이트를 할 때 올림
    • 1.5.0 → 1.6.0 으로 올렸다면 업데이트 시, 아무 문제 없어야 함
  • 세 번째 자리 → patch
    • 새로운 기능이 추가되었다기보다는 기존 기능에 문제가 있어 수정한 것을 내놓았을 때 patch 버전을 올림

패키지 버전에 붙어 있는 문자( ^, ~, >, <)

  • npm i express@^1.1.1
    • → minor 버전까지만 설치하거나 업데이트 1.1.1 이상부터 2.0.0 미만
    • → 1. x. x
  • npm i express@~1.1.1
    • → patch 버전까지만 설치하거나 업데이트 1.1.1 이상부터 1.2.0 미만 버전까지 설치
    • → 1.1.x
  • @latest(= @x) : 안정된 최신 버전 패키지 설치
  • @next : 가장 최근 배포판. 안정되지 않은 패키지 설치할 수 있음

Unable to resolve dependency tree

[Medium] npm peer Dependency
notion image
  • 위와 같은 에러가 발생할 때, 지금 다운 받으려는 vue-router@4.1.6이 vue@3.2.0을 참조해서, 현재 있는 vue@^2.6.14와 맞지 않다는 것임. → vue@^2.6.14와 맞는 버전의 vue-router를 다운로드하면 해결됨

npm 버전이 달라, 똑같은 package.json으로 아래 에러 발생

Error: @vitejs/plugin-vue requires vue (>=3.2.13) or @vue/compiler-sfc to be present in the dependency tree. at Object.<anonymous> (/home/ubuntu/VirtualOffice_WebServer/frontend/node_modules/vue-loader/dist/compiler.js:14:15) at Module._compile (internal/modules/cjs/loader.js:999:30) at Object.Module._extensions..js (internal/modules/cjs/loader.js:1027:10) at Module.load (internal/modules/cjs/loader.js:863:32)
  • npm version 과 node version 맞추기
  • nvm 다운 (GIT 참조)
    • curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.5/install.sh | bash
  • node version 특정 : nvm use <version>
    • 위와 같이 사용하면 바로 node 버전 과 npm 버전이 맞추어짐