Outsider's Dev Story

Stay Hungry. Stay Foolish. Don't Be Satisfied.
RetroTech 팟캐스트 44BITS 팟캐스트

npm 미러링 저장소 설정

작년 말부터 npm 저장소가 다운되었다는 얘기가 많이 나오고 있다. npm 저장소는 수시로 접속하긴 하지만 또 계속 접속하고 있는 것은 아니므로 내가 실제로 이 다운을 겪어본 적은 없다. 하지만 node.js 개발할 때는 물론이고 요즘은 node.js로 만든 도구들이 많이 존재하기 때문에 무언가를 하려고 할 때 npm 저장소가 제대로 동작하지 않는다면 상당히 피곤한 일이다.

npm 저장소 미러

이럴 때를 대비해서 npm 저장소를 미러링 해서 제공하고 있는 곳이 다수 있다. 현재 내가 아는 범위에서는 NodejitsuStrongLoop가 공식적으로(?) 미러링을 제공하고 있다.

npm을 사용하면 다음과 같이 공식 저장소인 https://registry.npmjs.org/를 이용한다.

$ npm search angular-moment
npm http GET https://registry.npmjs.org/-/all/since?stale=update_after&startkey=1392549072508
npm http 200 https://registry.npmjs.org/-/all/since?stale=update_after&startkey=1392549072508
NAME             DESCRIPTION                   AUTHOR   DATE       VERSION KEYWORDS
angular-moment   angular-moment ============== =urish   2014-02-05 0.6.2
angular-momentjs Moment.js for Angular.js      =gdi2290 2014-01-28 0.1.7   gdi2290 PatrickJS angular angularjs angular.js momen

임시로 다른 미러링 저장소에서 npm을 이용하려면 npm --registry <저장소 주소> <npm 명령어>의 문법을 사용하면 해당 저장소를 이용하게 된다.

그래서 StrongLoop의 미러링 저장소인 http://npm.strongloop.com를 이용하려면 다음과 같이 실행한다.

$ npm --registry http://npm.strongloop.com search angular-moment
npm http GET http://npm.strongloop.com/-/all/since?stale=update_after&startkey=1392549092470
npm http 200 http://npm.strongloop.com/-/all/since?stale=update_after&startkey=1392549092470
NAME             DESCRIPTION                   AUTHOR   DATE       VERSION KEYWORDS
angular-moment   angular-moment ============== =urish   2014-02-05 0.6.2
angular-momentjs Moment.js for Angular.js      =gdi2290 2014-01-28 0.1.7   gdi2290 PatrickJS angular angularjs angular.js momen

그리고 Nodejitsu의 미러링 저장소인 http://registry.nodejitsu.com를 이용하려면 다음과 같이 실행한다.

$ npm --registry http://registry.nodejitsu.com search angular-moment
npm http GET http://registry.nodejitsu.com/-/all/since?stale=update_after&startkey=1392549118934
npm http 200 http://registry.nodejitsu.com/-/all/since?stale=update_after&startkey=1392549118934
NAME             DESCRIPTION                   AUTHOR   DATE       VERSION KEYWORDS
angular-moment   angular-moment ============== =urish   2014-02-05 0.6.2
angular-momentjs Moment.js for Angular.js      =gdi2290 2014-01-28 0.1.7   gdi2290 PatrickJS angular angularjs angular.js

물론 원 저장소와 미러링 하는데 약간의 지연이 있다고 하고(이를 줄이려고 최대한 노력 중이라고 한다.) 참고로 최근 공개된 내용에 따르면 이 지연을 최대한 줄이기 위해서 미러링 서버는 https://fullfatdb.npmjs.com/registry를 사용하기를 권하고 있고 모듈파일은 제외하고 정보만 미러링 하려면 https://skimdb.npmjs.com/registry를 이용하기를 권하고 있다.(후자의 경우 다운로드는 원 저장소에서 다운받는다.)

임시로 미러링 서버를 사용하는 게 아니라 아예 다른 서버를 계속 이용하려면 npm config set registry <미러링 서버 주소>로 전역으로 설정하거나 ~/.npmrc에서 registry = <미러링 서버 주소>라인을 추가하면 된다.

2014/02/22 01:54 2014/02/22 01:54