npm / yarn / package.json

이재홍·2022년 1월 23일
0

npm vs yarn

npm (Node Package Manager / 노드 패키지 매니저)은
자바스크립트 런타임 환경인 Node.js의 기본 패키지 관리자입니다.
자바스크립트 모듈을 설치하기 위해 npm을 대신할만한 오픈 소스 대안들이 많이 있으며
그 중 yarn은 2016년 10월 페이스북이 npm의 성능 개선을 위해 공개했습니다.

npm 또는 yarn등으로 다른 사람들이 만든 패키지(npm에 업로드된 노드모듈)들을 모아둔 npm 공식 홈페이지
https://www.npmjs.com/
에서 모듈들을 다운 받아 사용하고 나의 패키지를 올릴 수도 있습니다.

node.js 설치시 npm은 같이 설치되며 yarn은 npm으로 설치할 수 있습니다.

sudo npm install -g yarn

-g 는 글로벌(전역) 설치로 명령어로 사용이 가능합니다. (모든 프로젝트와 콘솔에서 패키지 사용가능)
하지만 package.json에서 표시되지 않기 때문에 표시하고 싶다면
모듈로 같이 설치 후 npx 명령어를 먼저 앞에 붙인 후 명령어 사용도 가능합니다.
ex) npx yarn add express@latest rimraf
@ 뒤에 다운받고 싶은 버전을 명시하거나 최신버전 또는 @next로 출시예정 버전도 받을 수 있습니다.

yarn은 npm과 동일한 명령어도 있지만

차이도 있습니다.

기타 npm 명령어

npm ls 패키지명 :
npm outdated : 사용중인 패키지의 버전 변화 확인 (확인 후 npm update)
npm rm (=== npm uninstall) : 패키지 삭제
npm search 검색어 : npmjs.com의 검색기능과 동일
npm info 패키지명 : 패키지 세부 정보
npm adduser (=== npm login) : npm 로그인 (공식홈페이지에 회원가입되어있어야함)
npm whoami : 현재 로그인된 사용자 누구인지
npm logout : 로그아웃
npm version (major minor patch) : 내 패키지의 버전을 하나 올림(깃 커밋도 같이됨)
npm deprecate 패키지명@버전 메세지 : 패키지 설치 시 그 버전엔 오류가 있다고 경고메시지를 띄움
npm publish : 내 패키지 배포
npm unpublish --force : 내 패키지 배포 중단(배포후 72시간 내에만 가능)
npm ls 패키지명 : 내 프로젝트에서 패키지(의존포함) 사용 여부

참고: https://docs.npmjs.com/cli/v8/commands

package.json

package.json은 현재 프로젝트에 대한 정보와 사용중인 패키지들의 버전정보를 담은 파일로
npm으로 패키지 관리를 하기 위해선 다음과 같은 명령어로 편리하게 package.json 파일을 생성합니다.

npm init -y
yarn init -y

  • name
    프로젝트 이름으로 중앙 저장소에 배포할 때 version과 함께 필수 항목입니다. url로 사용되고, 설치할 때 디렉토리 이름이 되기 때문에 url이나 디렉터리에서 쓸 수 없는 이름을 사용하면 안 됩니다. 또한, 이름에 node나 js가 들어가면 안 됩니다. name은 214자보다 짧아야 하며, 점(.)이나 밑줄(_)로 시작할 수 없습니다. 대문자를 포함해서는 안 되며, require() 함수의 인수로 사용되며 짧고 알기 쉬운 것으로 짓는 것이 좋습니다.
  • version
    프로젝트 버전을 정의합니다.
    SemVer 방식을 따라 3단계 Major, Minor, Patch 로 나뉘고 배포시에 항상 버전을 올려야 합니다.
    메이저는 하위 버전과 호환되지 않는 수정 사항이 생겼을 때 올리고,
    마이너는 하위버전과 호환되는 수정 사항이 생겼을 때,
    패치는 버그를 수정했을 때 올립니다.
    ^ ~ 등의 버전기호를 사용하면 업데이트시 ^는 메이저버전은 고정되고 ~는 마이너버전까지 고정됩니다.
  • description
    프로젝트 설명으로, 문자열로 기술합니다.
    npm search로 검색된 리스트에 표시되기 때문에 사람들이 패키지를 찾아내고 이해하는 데 도움이 됩니다.
  • main
    프로그램의 시작점이 되는 모듈. test 패키지를 설치한 사용자가 test를 import했을 때 main으로 지정한 모듈의 exports 객체가 반환 됩니다.
  • scripts
    프로젝트에서 자주 실행해야 하는 명령어를 scripts로 작성해두면 npm run 또는 yarn 명령어로 실행 가능합니다.
  • keywords
    프로젝트를 검색할 때 참조되는 키워드입니다.
    description과 마찬가지로 npm search로 검색된 리스트에 표시됩니다.
  • author
    프로젝트 작성자 정보로, 한 사람만을 지정합니다. JSON 형식으로 name, email, url 옵션을 포함합니다.
  • license
    라이센스 정보로 보통 ISC 또는 MIT같은 오픈소스 라이센스를 명시해주고 배포합니다.
  • private
    이 값을 true로 작성하면 중앙 저장소로 저장하지 않습니다.
  • dependencies
    프로젝트 의존성 관리를 위한 부분입니다. 이 프로젝트가 어떤 확장 모듈을 요구하는지 정리할 수 있습니다.
    일반적으로 package.json에서 가장 많은 정보가 입력되는 곳입니다.
    애플리케이션을 설치할 때 이 내용을 참조하여 필요한 확장 모듈을 자동으로 설치합니다.
    따라서 개발한 애플리케이션이 특정한 확장 모듈을 사용한다면 여기에 꼭 명시를 해주어야 합니다.
    또한, npm install 명령은 여기에 포함된 모든 확장 모듈들을 설치하게 되어 있습니다.
  • devDependencies
    개발할 때만 의존하는 확장 모듈을 관리합니다.

package-lock.json / yarn.lock

의존중인 패키지가 의존하고있는 패키지들의 버전정보가 담기기 때문에 정확한 버전을 위해 항상 같이 필요합니다.

0개의 댓글