NPM Repository 만들기는 생각보다 쉽습니다.
사실, 이 방법은 Repository를 만드는거라기 보다 http://www.npmjs.org를 Cloning 하는거입죠.
https://github.com/isaacs/npmjs.org 에 가면 어떻게 하는지 잘 나와있는데, 일단 CouchDB가 설치되어 있어야 합니다.
CouchDB가 설치되어 있다는 가정하에 몇가지 작업이면 뚝딱 만들 수 있습니다
‘왜 Repository를 따로 두느냐?’
라는 질문을 하신다면…
‘Maven도 Private Repository를 따로 두는것과 같은 이유입니다.’
라고 답하고 싶습니다.
일단 과정은 간단합니다. 따라해볼까요?
- 설치한 CouchDB에 registry 라는 DB를 생성합니다.
- npmjs.org를 Cloning 합니다.
$ git clone https://github.com/isaacs/npmjs.org.git $ cd npmjs.org
- CouchApp을 설치합니다.
$ sudo npm install couchapp -g $ npm install couchapp
- 아래 명령을 실행해 registry와 search를 Sync 시킵니다.
$ couchapp push registry/app.js http://localhost:5984/registry $ couchapp push www/app.js http://localhost:5984/registry ## 검색 UI와 관련. 필요없음 안해도 된다.
- 아래 명령을 실행해 NPM Repo를 복제합니다. (가장 오래걸림. 크기가 2.93GB 정도 되는듯)
$ curl -X POST -H "Content-Type:application/json" http://localhost:5984/_replicate -d '{"source":"http://isaacs.couchone.com/registry/", "target":"registry"}'
- NPM Client에 새로만든 Repo를 등록시킵니다. 그런데 등록도 아래 3가지 방법이 있더군요.(등록 2, 바로 사용 1) 6.1.
~/.npmrc
를 만들거나,registry = http://localhost:5984/registry/_design/app/_rewrite
6.2. 바로 설정한다.
$ npm config set registry http://localhost:5984/registry/_design/app/_rewrite
6.3. 필요할 때만 쓴다.
$ npm --registry http://localhost:5984/registry/_design/app/_rewrite install <package>
사실… 이 포스트는 https://github.com/isaacs/npmjs.org 내용 그대로 읽어다 붙인거 밖에 안됩니다. 아래 5번 Step 하다가 좀 지루해서 써본거라는..
실제 적용해보면서 쉽게 안되던 부분을 정리해 본다.
덧1 ) CouchDB Configuration에서 아래 해당하는걸 찾아 true에서 false로 바꿔줄것. (insecure_rewrite_rule 관련 에러 피해감)
secure_rewrites false
덧2 ) NPM Repository를 http://localhost:5984/registry/_design/app/_rewrite
와 같이 쓸 경우 NPM에서 제대로 못읽는다.
/etc/couchdb/local.ini
또는 /usr/local/etc/couchdb/local.ini
부분을 다음과 같이 수정하면 NPM 쓰기가 편해진다.
[vhosts] localhost:5984 = /registry/_design/app/_rewrite