npm (Node Package Manager): 패키지 관리자
- 역할: npm은 Node.js로 만들어진 다양한 라이브러리(패키지)들을 다운로드, 설치, 업데이트, 삭제하고, 프로젝트에서 이러한 패키지들을 관리하는 역할을 합니다. 마치 스마트폰의 앱 스토어와 비슷하다고 생각하시면 돼요. 필요한 기능을 가진 앱(패키지)을 검색해서 설치하고 관리하는 것처럼요.
- 주요 기능:
- 패키지 설치 (npm install <패키지_이름>): 원하는 라이브러리를 프로젝트에 추가합니다. 설치된 패키지들은 node_modules 폴더에 저장되고, package.json 파일에 의존성 정보가 기록됩니다.
- 패키지 업데이트 (npm update <패키지_이름>): 설치된 패키지를 최신 버전으로 업데이트합니다.
- 패키지 삭제 (npm uninstall <패키지_이름>): 더 이상 필요 없는 패키지를 프로젝트에서 제거합니다.
- 스크립트 실행 (npm run <스크립트_이름>): package.json 파일의 scripts 부분에 정의된 명령어를 실행합니다. 예를 들어, 개발 서버를 실행하거나 빌드 명령어를 실행하는 데 사용됩니다.
- 패키지 발행 (npm publish): 자신이 만든 패키지를 npm 저장소에 올려 다른 개발자들이 사용할 수 있도록 합니다.
npx (npm package runner): 패키지 실행 도구
- 역할: npx는 npm 레지스트리에 있는 패키지 또는 로컬에 설치된 패키지에 있는 실행 파일을 쉽게 실행할 수 있도록 도와주는 도구입니다. 특히 전역으로 설치하지 않고 일회성으로 특정 패키지의 실행 파일을 사용하고 싶을 때 매우 유용합니다.
- 주요 특징:
- 전역 설치 없이 실행: npx는 명시적으로 전역에 설치하지 않은 패키지의 실행 파일도 임시로 다운로드하여 실행한 후 자동으로 지워줍니다. 예를 들어, create-react-app과 같은 CLI 도구를 전역에 설치하지 않고 바로 실행할 수 있습니다.
- 로컬 패키지 실행: node_modules/.bin 경로에 있는 로컬에 설치된 패키지의 실행 파일도 간단하게 실행할 수 있습니다.
- 버전 관리 용이: 특정 버전의 패키지를 일회성으로 실행해야 할 때 유용합니다.
- 오타 방지: 전역에 설치된 패키지 이름에 오타가 났을 경우 오류가 발생하지만, npx는 먼저 로컬에서 찾고 없으면 npm 레지스트리에서 찾기 때문에 오타로 인한 오류 가능성을 줄여줍니다.
예시:
- npm install react: React 라이브러리를 현재 프로젝트에 설치합니다.
- npm run start: package.json에 정의된 start 스크립트를 실행합니다. (예: 개발 서버 시작)
- npx create-react-app my-app: 전역에 create-react-app을 설치하지 않고 바로 실행하여 my-app이라는 이름의 React 프로젝트를 생성합니다.
- npx eslint --fix src/index.js: 로컬에 설치된 eslint 패키지의 실행 파일을 사용하여 src/index.js 파일을 자동으로 코드 스타일 규칙에 맞게 수정합니다.