Search
▪️

Package Manager

npm 설명과 Package 만들기 (package.json)

Node.js를 설치하게 되면 npm도 같이 설치된다. npm이라고 함은 Node.js Package Manage로써 Package를 관리하게 된다. Package는 다른 사용자들이 만들어 둔 Module이라고 보면 된다. (즉, Third Party Package이다.)
실제로 Node.js Package는 60~70만 개의 Package가 있다. 개발을 하다 보면 순수하게 개발하는 Case는 드물고, Package를 많이 이용하게 된다. (일종의 Lego 조립처럼 말이다.)
Package Name은 Unique해야 한다. 이런 Package 정보들은 package.json에 기록되어 생성된다. 일종의 Package의 설명서라고 보면 되겠다. (따라서, Third Party Package를 설치했을 때, Source Code에 대한 분석보다는 package.json을 먼저 보는 것이 도움이 많이 된다.)

SemVer Version 이해하기

package.json의 engine은 Package가 사용하고 있는 Node.js와 npm의 Version을 명시하게 된다.
SemVer라는 것은 Semantic Versioning이라고 해서 세 자리 수의 Version 표기법을 의미한다.
세 자리 중 각 자리 마다 의미가 있는데, 첫 번째 자리는 Major Version, 두 번째 자리는 Minor Version, 세 번째 자리는 Patch Version를 의미한다.
세 번째 자리는 기능에 대한 단순 오류나 버그들을 수정 했을 때 올리게 되고, 두 번째 자리는 신 기능이 추가 될 때 마다 올라가게 되며, 첫 번째 자리는 대규모 변화가 있을 때 올라가게 된다. (첫 번째 자리 수의 변경의 경우 이전 버전과 크게 호환이 되지 않을 가능성이 높다.)
^이라는 캐롯 표시는 "Minor Version, Patch Version에 대해서 Update를 허용한다"라는 의미이다.
** Major Version에 대해서는 Update에 대해서 진지하게 고민을 해봐야 한다. 이외의 Minor, Patch에 대해서는 Update를 해도 무방하다.
** 부등호를 이용할 수 있다. 또한 부등호나 캐롯 표시가 없이 SemVer의 명시만 있다면, 딱 그 Version만 이용해야 한다. 그리고 X.X.X에서의 X는 모든 숫자를 의미한다.

npm Command 알아보기

npm outdated를 통해서 노후된 Version의 Package를 확인할 수 있다.
npm update의 여부는 Package Version에 명시된 ^에 따라서 결정된다.
npm remove는 npm rm으로, npm install은 npm i로 줄여서 쓸 수 있다.
npm search를 통해서 Package에 대한 검색이 가능하다. 더 자세히 보고 싶다면 npm info를 사용하면 된다.
npm ls를 통해서 Package가 어느 Package에 의해서 설치 되었는지 Path를 볼 수 있다.
Package 배포를 위해선 http://npmjs.com에 가입한 후, 배포하려는 Package에서 npm adduser로 로그인 한다. (npm whoami를 통해서 Login 한 사용자가 누구인지 확인할 수 있다. npm logout을 통해서 Logout 할 수 있다.) npm version을 통해서 Version을 설정할 수 있지만, 이는 직접 명시를 해야 하는 단점이 있다. 따라서 npm version patch, npm version minor, npm version major를 통해서 Version을 올릴 수 있다.

Package 배포하기

package.json에서 main이 의미하는 것은 Package의 Entry Point를 의미한다. Package를 실행 시키는데 필요한 File을 의미한다.
Git과 연동도 가능하다. Tag와 Commit에 대해서 동시에 신경을 써야 한다.
npm publish를 통해서 배포할 수 있다.
특정 Package 명을 사용해야 하는데 누군가 선점하고 있다면 npm Sevice에 문의하면 Handling 해준다.
npm unpublish (—force Option 포함)를 통해서 배포를 취소할 수 있다. (단, 24시간 내에 수행해야 한다. 그렇지 않으면 삭제할 수 없다. 다른 Package에서, Publish한 Package를 Dependency로 갖고 있다면, 해당 Package는 먹통이 될 수 있기 때문에 생긴 정책이다.)