npm 패키지 관리자 소개
npm 소개
npm
은 Node.js의 표준 패키지 관리자입니다.
2022년 9월에는 210만 개 이상의 패키지가 npm 레지스트리에 등록된 것으로 보고되었으며, 이는 지구상에서 가장 큰 단일 언어 코드 저장소이며 (거의!) 모든 것에 대한 패키지가 있다고 확신할 수 있습니다.
Node.js 패키지의 종속성을 다운로드하고 관리하는 방법으로 시작되었지만, 이후 프런트엔드 JavaScript에서도 사용되는 도구가 되었습니다.
TIP
Yarn
및 pnpm
은 npm cli의 대안입니다. 함께 확인해 볼 수 있습니다.
패키지
모든 종속성 설치
다음 명령을 실행하여 package.json
파일에 나열된 모든 종속성을 설치할 수 있습니다.
npm install
프로젝트에 필요한 모든 항목을 node_modules
폴더에 설치하고, 아직 없는 경우 해당 폴더를 만듭니다.
단일 패키지 설치
다음 명령을 실행하여 단일 패키지를 설치할 수 있습니다.
npm install <package-name>
또한 npm 5부터 이 명령은 package.json
파일 종속성에 <package-name>
을 추가합니다. 버전 5 이전에는 --save
플래그를 추가해야 했습니다.
종종 이 명령에 더 많은 플래그가 추가되는 것을 볼 수 있습니다.
--save-dev
(또는-D
)는package.json
파일의devDependencies
섹션에 패키지를 추가합니다.--no-save
는package.json
파일에 패키지를 저장하지 않습니다.--no-optional
은 선택적 종속성 설치를 방지합니다.--save-optional
은package.json
파일의optionalDependencies
섹션에 패키지를 추가합니다.
플래그의 약어도 사용할 수 있습니다.
-S
:--save
-D
:--save-dev
-O
:--save-optional
devDependencies와 dependencies의 차이점은 전자는 테스트 라이브러리와 같은 개발 도구를 포함하는 반면, 후자는 프로덕션 환경에서 앱과 함께 번들링된다는 것입니다.
optionalDependencies의 경우 차이점은 종속성의 빌드 실패가 설치 실패를 유발하지 않는다는 것입니다. 그러나 종속성 부족을 처리하는 것은 프로그램의 책임입니다. 선택적 종속성에 대해 자세히 알아보십시오.
패키지 업데이트
업데이트도 쉽게 할 수 있습니다. 다음을 실행하면 됩니다.
npm update
이렇게 하면 모든 종속성이 최신 버전으로 업데이트됩니다.
업데이트할 단일 패키지를 지정할 수도 있습니다.
npm update <패키지-이름>
패키지 제거
패키지를 제거하려면 다음을 실행하면 됩니다.
npm uninstall <패키지-이름>
버전 관리
npm
은 일반 다운로드 외에도 버전 관리를 지원하므로 패키지의 특정 버전을 지정하거나 필요한 버전보다 높거나 낮은 버전을 요구할 수 있습니다.
많은 경우 라이브러리가 다른 라이브러리의 주요 릴리스와만 호환되는 것을 알 수 있습니다.
또는 최신 라이브러리 릴리스의 버그가 아직 수정되지 않아 문제가 발생하고 있습니다.
라이브러리의 명시적 버전을 지정하면 모든 사람이 정확히 동일한 패키지 버전을 유지하여 package.json
파일이 업데이트될 때까지 전체 팀이 동일한 버전을 실행하는 데 도움이 됩니다.
이러한 모든 경우에 버전 관리가 많은 도움이 되며 npm
은 시맨틱 버전(semver) 표준을 따릅니다.
다음 명령을 실행하여 특정 버전의 패키지를 설치할 수 있습니다.
npm install <패키지-이름>@<버전>
다음 명령을 실행하여 패키지의 최신 버전을 설치할 수도 있습니다.
npm install <패키지-이름>@latest
작업 실행
package.json 파일은 다음을 사용하여 실행할 수 있는 명령줄 작업을 지정하는 형식을 지원합니다.
npm run <작업-이름>
예를 들어 다음과 같은 내용의 package.json 파일이 있는 경우:
{
"scripts": {
"start": "node index.js",
"test": "jest"
}
}
이 기능을 사용하여 Webpack을 실행하는 것이 매우 일반적입니다.
{
"scripts": {
"watch": "webpack --watch --progress --colors --config webpack.conf.js",
"dev": "webpack --progress --colors --config webpack.conf.js",
"prod": "NODE_ENV=production webpack -p --config webpack.conf.js"
}
}
따라서 잊어버리거나 오타를 내기 쉬운 긴 명령을 입력하는 대신 다음을 실행할 수 있습니다.
npm run watch
npm run dev
npm run prod