패키지 매니저(Package Manager)는 소프트웨어 라이브러리와 패키지의 설치, 업그레이드, 설정, 제거를 자동화하는 도구이다. 이는 개발자가 쉽게 의존성 관리를 하고, 필요한 라이브러리를 쉽게 설치할 수 있게 도와준다. js 뿐만 아닌 다양한 언어와 플랫폼에 맞춘 여러 패키지 매니저가 존재하지만, js 환경에서 사용되는 여러 패키지 매니저를 알아보자.
npm은 Node.js 환경에서 사용되는 패키지 관리 도구로, JavaScript 프로젝트에서 필요한 패키지들을 쉽게 설치하고 관리할 수 있도록 도와주는 툴이다. 주요 기능은 다음과 같다.
패키지 설치
npm install
또는 npm i
명령어를 사용하여 프로젝트에 필요한 패키지를 설치할 수 있다. 이 명령어는 패키지를 설치하고 package.json
파일에 의존성을 기록한다.
의존성 관리
package.json
파일에는 프로젝트가 의존하는 패키지들과 그 버전 정보가 명시된다. 이를 통해 프로젝트를 공유하거나 다른 환경에서 사용할 때 일관성을 유지할 수 있다.
스크립트 실행
package.json
파일의 scripts 섹션에는 자주 사용되는 작업들을 스크립트로 정의할 수 있다. 명령어들은 "scripts"
안에 명시할 수 있고, 주로 dev
, start
등이 있다. 이들을 npm run dev
등의 명령어를 사용하여 이러한 스크립트를 실행할 수 있다.
패키지 배포
npm을 통해 자신이 개발한 패키지를 공유할 수 있다. 스크립트에 정의된 명령어들을 통해 npm run build
드의 명령어를 사용하여 패키지를 npm 레지스트리에 배포할 수 있다.
버전 관리
Semantic Versioning(SemVer)을 따르며, npm을 통해 패키지의 버전을 업데이트하고 관리할 수 있다.
레지스트리
npm은 공식적인 패키지 레지스트리인 npm 레지스트리를 제공하며, 개발자들은 이 레지스트리에서 다양한 패키지를 찾고 공유할 수 있다.
보통 개발하다가, 다른 기능과의 호환을 위해 최신 버전이 아닌 특정 버전을 설치해야하는 경우가 있다. 이때npm i tool-name@4.5.6
이런식으로 설치하면 된다. 또한 가장 최신 버전을 설치하려면 npm i tool-name@latest
으로 실행하면 가장 최신 버전이 설치된다.
npm rm tool-name
또는 npm uninstall tool-name
을 통해 제거를 할 수 있다. 만약 해당 tool이 글로벌에 잇으면 -G
, Dev 에 있으면 -D
를 쓰면 된다.
npx는 npm 버전 5.2.0 이상에서 제공되는 도구로, 일반적으로 글로벌하게 설치하지 않고 패키지를 실행할 때 사용된다. npx의 주요 특징은 로컬에 설치되지 않은 패키지를 쉽게 실행할 수 있게 해주며, 실행하는 패키지가 npx와 호환되어야 한다.
예를 들어, create-react-app을 로컬에 설치하지 않고 바로 사용하려면 npx create-react-app my-new-app과 같이 명령어를 사용할 수 있다. 또한, npx는 로컬에 이미 설치된 패키지가 있더라도 해당 패키지의 최신 버전을 사용하여 실행할 수 있도록 도와준다. 이는 프로젝트에 항상 최신 버전의 도구를 사용할 수 있도록 지원한다.
즉 두 기능의 차이점을 정리하자면, npm은 패키지 관리와 관련된 작업을 처리하는 도구이고, npx는 로컬에 설치하지 않고 패키지를 실행하는 데 사용되는 간편한 도구이다.