5장 npm 알아보기

마조리카·2021년 4월 9일
0

5.1 npm 이란

Node Pakage Manager

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

5.2 package.json으로 패키지 관리하기

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

  • 같은 패키지라도 버전별로 기능이 다를 수 있으므로 버전을 기록해두어야 함
  • 동일한 버전을 설치하지 않으면 문제가 생길 수 있음
  • 노드 프로젝트 시작 전 package.json부터 만들고 시작함(npm init)
  • 예제)npm init
    package name : (publish) npmtest
    version : (1.0.0)
    description : 설명
    entry point(진입점) : (index.js)
    test command :
    git repository :
    kewords :
    author : Leetaehee
    license : (ISC) MIT

package.json 속성들

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

npm 스크립트

npm init이 완료되면 폴더에 package.json이 생성됨

스크립는 간단히 말해 터미널에 치는 명령어를 간단하게 하는것이다.

npm run [스크립트명]으로 스크립트 실행

해당 경로에서 npm run test하면 아래 코드가 실행됨.
start같은 유명한것들은 npm start해도 됨

"scripts":{
	"test": "echo \"error: no test specified\" && exit 1",
"start": "node index",
},

패키지 설치하기

express 설치하기

  • npm i 하면 node_modules 폴더 생성
  • npm i express (== npm install express)
    위와 같이하면
    package.json 에 "dependencies" 에 저장됨.
  • npm i -D nodemon
    위와 같이하면
    package.json에 "devDependencies"에 저장됨 - 개발할때만 쓰는 것들 모아두면됨
  • 여러개 동시 설치는 npm i ~~ ~~ ~~식으로

    - 모두 node_modules에 저장됨 그 패키지에 dependencies까지 다같이 받아진다. 배포할땐 node_modules를 지우고 배포한다. 용량이 커서.. 폐쇄 인트라넷에는 node_modules까지 가져와야한다.

  • npm i -g rimraf 는 글로벌 전역 설치다.
    dependenceis에 설치 표시가 안보인다. 되도록 쓰지말자.
    이거 대신 npm i -D로 똑같이 설치한다음 사용할때 앞에 npx를 써주자 그럼 똑같이 글로벌로 작동한다.
  • package-lock.json도 생성되어 패키지 간 의존 관계를 명확하게 표시함, 정확한 버전을 표시해줌

5.3 패키지 버전 이해하기

SemVer 버저닝

노드패키지의 버전은 SemVer 방식을 따름

  • Majer, Minor, Patch (ex 1. 1.1 )
  • 노드에서는 배포를 할 떄 항상 버전을 올려야 함
  • Major는 하위 버전과 호환되지 않은 수정 사항이 생길때 올림
  • Minor는 하위 버전과 호환되는 수정 사항이 생겼을 때 올림
  • Patch는 기능에 버그를 해결할 때 올림

버전 기호 사용하기

버전 앞에 기호를 붙여 의미를 더함

  • ^1.1.1: 패키지 업데이트 시 minor 버전까지만 업데이트 됨
  • ~1.1.1: 패킺 업데이트 시 patch 버전까지만 업데이트 됨
  • 1.1.1: 업데이트 노노
  • >=, <=, >, 는 이상, 이하, 초과, 미만.
  • @latest는 최신을 의미 (npm i express@latest)
  • @next로 가장 최신 배포판 사용 가능 (불안정함)
  • 알파/ 베타/RC 버전이 존재할 수도 있음. (1.1.1-alpha.0 )

5.4 기타 npm 명령어

기타 명령어

  • npm outdated : 어떤 패키지에 기능 변화가 생겼는지 알 수 있음.
  • npm uninstall 패키지명 : 패키지 삭제(npm rm 패키지명도 가능) --force
  • npm search 검색어 : npm 패키지를 검색할 수있음 (npmjs.com 에서도 가능)
  • npm info 패키지명 : 패키지의 세부 정보 파악 가능
  • npm adduser : npm에 로그인을 하기 위한 명령어 (npmjs.com에서 회원가입)
  • npm whoami : 현재 사용자가 누구인지 알려줌
  • npm logout : 로그인한 계정을 로그아웃
  • npm version : package.json의 버전을 올려줌 git까지 같이해줌 ㅅㅅ ex) npm version minor
  • npm deprecate [패키지명][버전][메세지] : 패키지를 설치할 때 경고 메세지를 띄우게 함(오류가 있는 패키지에 적용)
  • npm publish : 자신이 만든 패키지를 배포
  • npm unpublish : 자신이 만든 패키지를 배포 중단 (배포후 72시간 내에만 가능) npm
  • 기타명령어는 https://docs.npmjs.com 의 CLI Commands에서 확인
  • npm ls : 내 프로젝트가 어떤 패키지를 사용하고 있는지 찾고싶을때 사용

0개의 댓글