Node/패키지 매니저

Package.json

webmaster 2022. 9. 6. 00:21
728x90

Node Package Manager(NPM)

  • 노드의 패키지 매니저
  • 다른 사람들이 만든 소스 코드들을 모아둔 저장소
  • 남의 코드를 사용하여 프로그래밍 가능
  • 이미 있는 기능을 다시 구현할 필요가 없어 효율적
  • 오픈 소스 생태계를 구성중
  • 모듈이 다른 모듈을 사용할 수 있듯 패키지도 다른 패키지를 사용할 수 있다(의존 관계라고 부른다)

패키지 = npm에 업로드된 노드 모듈

Package.json

현재 프로젝트에 대한 정보와 사용 중인 패키지에 대한 정보를 담은 파일

  • 같은 패키지라도 버전별로 기능이 다를 수 있으므로 버전을 기록해두어야 함
  • 동일한 버전을 설치하지 않으면 문제가 생길 수 있음
  • 노드 프로젝트 시작 전 package.json부터 만들고 시작함(npm init)
npm init

  • package name: 패키지의 이름입니다. package.json의 name 속성에 저장됩니다.
  • version: 패키지의 버전입니다. npm의 버전은 다소 엄격하게 관리됩니다. 5.3절에서 다룹니다.
  • entry point: 자바스크립트 실행 파일 진입점입니다. 보통 마지막으로 module.exports를 하는 파일을 지정합니다. package.json의 main 속성에 저장됩니다.
  • test command: 코드를 테스트할 때 입력할 명령어를 의미합니다. package.json scripts 속성 안의 test 속성에 저장됩니다.
  • git repository: 코드를 저장해둔 Git 저장소 주소를 의미합니다. 나중에 소스에 문제가 생겼을 때 사용자들이 이 저장소에 방문해 문제를 제기할 수도 있고, 코드 수정본을 올릴 수도 있습니다. package.json의 repository 속성에 저장됩니다.
  • keywords: 키워드는 npm 공식 홈페이지(https://npmjs.com)에서 패키지를 쉽게 찾을 수 있게 해 줍니다. package.json의 keywords 속성에 저장됩니다.
  • license: 해당 패키지의 라이선스를 넣어주면 됩니다.

스크립트 실행하기

npm run test
//start는 많이 사용되서 생략 가능하다
npm run start 
npm run
  •  npm run [스크립트명]으로 스크립트 실행
    • start 같은 경우 많이 사용되 생략 가능하다

패키지 설치하기

npm install express
npm install morgan cookie-parser express-session

  •  package.json에 기록됨(dependencies에 express 이름과 버전 추가됨)
  • npm install 시 node_modules 폴더 생성 express 외에도 express와 의존 관계가 있는 패키지들이 모두 설치됨
    • package-lock.json 생성되어 패키지 의존 관계를 명확하게 표시함
  • 내부에 설치한 패키지들이 들어 있음
  • npm install 패키지1 패키지 2...로 여러 개 설치 가능

개발자용 패키징

npm i -D nodemon
  • npm install --save-dev 패키지명 또는 npm i -D 패키지명
  • devDependencies에 추가됨 

글로벌(전역) 패키지

npm i -g rimraf 
npm i -D rimraf 
//글로벌 패키지처럼 사용
npx rimraf node_modules
  • npm install --global 패키지명 또는 npm i -g 패키지명
  • 모든 프로젝트와 콘솔에서 패키지를 사용할 수 있음
    • 예제는 rm –rf(리눅스의 삭제 명령)를 흉내내는 rimraf 패키지의 글로벌 설치
  • npx로 글로벌 설치 없이 글로벌 명령어 사용 가능
    • 기록으로 남지 않기 때문에 해당 글로벌 패키지를 설치했는지 알 수 없다
    • npx를 사용해서 글로벌로 사용하는 것이 가장 좋다

 

728x90

'Node > 패키지 매니저' 카테고리의 다른 글

npm 배포하기  (0) 2022.09.06
npm 명령어들 알아보기  (0) 2022.09.06
SemVer  (0) 2022.09.06