패키지매니저
Node.js 환경에서 라이브러리 및 메타데이터를 관리하는 방법을 알아본다.
npm 이란?
- Node Package Manager
- https://www.npmjs.com에서 필요한 라이브러리를 내려받아 설치하고 삭제하는 등의 관리를 해주는 프로그램
- 실제 라이브러리와 라이브러리 명세파일을 따로 관리
>> node_modules 폴더에 라이브러리를 내려받아 저장하고 package.json이라는 파일에 설치된 라이브러리의 정보를 적어 저장
npx 란?
- Node Package Execute
- npm에서 제공하는 도구로 실행과 사용에 도움을 줌.
- 용도
1. 로컬에 설치되어 있지 않은 패키지를 설치없이 실행
>> 외부 패키지에 포함된 파일도 포함
2. 로컬에 설치된 패키지가 있더라도 최신 버전을 실행
npm과 yarn
- 공통점
- node.js환경에서 어플리케이션의 패키지(라이브러리, 모듈, 프레임워크 등)을 관리하는 도구
- 자바의 Maven, Gradle과 동일한 역할을 한다.
- package.json 파일을 통해서 의존성 및 메타데이터를 관리한다.
- lockfile로 마지막 시점의 정확한 의존성 트리를 저장한다. - 차이점
- npm은 node.js 설치시 자동설치되지만 yarn은 'npm install yarn'으로 설치해야함.
- yarn은 병렬설치가 가능하여 의존성 설치속도가 빠르다.
- yarn은 패키지의 무결성을 검증하고 안전하지 않은 패키지를 식별하여 경고를 띄운다. - 사용법
1. 프로젝트 디렉토리에서 명령줄 인터페이스(CLI)를 연다
2. 'npm 명령어' 또는 'yarn 명령어' 형식으로 명령을 내린다.
package.json
- npm init으로 생성된다
- 프로젝트의 정보 및 기타 실행 스크립트(메타데이터)를 작성하고
프로젝트의 의존성(dependency) 정보와 버전 정보 저장한다 - 포함내용
- name : 프로젝트의 이름
- version : 프로젝트의 버전
- description : 프로젝트에 대한 간단한 설명
- main : 프로젝트 진입점(entry point) 파일의 경로
- scripts : 프로젝트에서 사용할 수 있는 명령어 스크립트를 정의
- keywords : 프로젝트와 관련된 키워드
- author : 프로젝트의 작성자
- license : 프로젝트의 라이센스
- dependencies : 프로젝트에 필요한 의존성 패키지
- devDependencies : 개발 환경에서만 필요한 의존성 패키지 - version range
- 명시적 버전이 아닌 범위적 버전을 사용함으로써 유지보수에 편리성을 준다.
- 범위 규칙은 Semantic Versioning(170번 포스팅에서 검색)을 따른다.
- "*"를 쓰면 모든 버전을 허용하는 의미이다. - lockfile
- npm의 package-lock.json 파일
yarn의 yarn.lock 파일
- package.json에 명시된 의존성 트리의 정확한 복제본을 저장
>> 버전을 정확히 명시하여 여러 개발환경에서 동일하게 동작함을 보장한다.
- npm/yarn에 의해서 node_modules나 package.json이 수정되는 경우 생성되거나 업데이트된다.
- 개발자가 임의로 조작하지 않는다.
명령어
기본이 되는 npm의 명령어들을 익혀본다.
npm 명령어
- 프로젝트 초기화
* npm init
- 새로운 프로젝트를 초기화한다.
- package.json 파일 생성됨
-y : 사용자에게 대화형으로 프로젝트 정보를 입력받지 않고, 기본값으로 자동으로 설정 - 종속성설치
* npm install 패키지네임
- node_modules 디렉토리에 해당 패키지를 설치한다.
- 자동으로 package.json에서 종속성 관리가 된다.
- add 명령어도 동일한 기능을 한다.
-g : 전역으로 설치하는 옵션. 지정하지 않을 시 현재 작업중인 프로젝트의 디렉토리에 설치된다
>> 다른 프로젝트의 의존선에 영향을 미치치 잖음
--save-dev : 개발용 종속성인 devDependencies 섹션에 추가된다.
* npm i (install)
- package.json 기반으로 모든 종속성 설치
단, package-lock.json이 있다면 해당 파일 기준으로 설치한다.
- 새로운 종속성이 추가되거나 업데이트 될 시 package-lock.json을 업데이트 시킨다.
* npm ci (continuous integration)
- package-lock.json 기반으로 모든 종속성 설치
- 기존 node_modules 폴더를 삭제후 재설치함.
- package-lock.json을 업데이트 시키지 않는다. - 어플리케이션 실행
* npm start
- 프로덕션 모드에서 애플리케이션을 실행하는 데 사용
- package.json 파일 script 섹션의 'start' 스크립트를 실행
- 일반적으로 'start' 스크립트는 주로 개발 서버를 실행하는 데 사용한다.
* npm run dev
- 개발 모드에서 애플리케이션을 실행하는 데 사용
- package.json 파일 script 섹션의 'dev' 스크립트를 실행
- 'dev'는 기본으로 설정된 명령어가 아니기 때문에 run을 이용해서 실행한다.

'다양한 기술들 > Node.js 관련' 카테고리의 다른 글
| [개요] 시작하기 / nvm (0) | 2023.05.10 |
|---|
댓글