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 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
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:
- MAJOR version when you make incompatible API changes
- MINOR version when you add functionality in a backwards compatible manner
- 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

- 위와 같은 에러가 발생할 때, 지금 다운 받으려는 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 버전이 맞추어짐