Build Your Own npm repository

今天早上起來就看到 npm 官推一連串的訊息,看來是爆炸了...

千萬不要被開場誤導,npm 已經算是非常穩定的服務了,再加上它所承載那麼巨大的流量以及 node.js 眾開發者關注的眼光(炸),不過只要是線上服務就一定會有這種情形發生,所以如果你的開發環境真的重度依賴 npm 的話,你最好想一個備用的方案。

當然私有的 npm 也不單是備份的用途而已,有些內部用的套件,你也可以部屬到自家的程式庫上面,這樣不但可以兼顧安全,又可以直接用 npm 這種大家都習慣的開發流程。

What should I do?

如果你打算這麼做,有下列幾個方式:

How to create a private npm.js repository - 手動自己建一個
上面列的這篇文章就一步步教你怎麼自己建一個 npm repository,因為 npm 是用 couchDB 作為後端資料庫,所以基本上就是得把 couchdb 架起來。

老實說,我覺得 couchdb 不是個討人喜歡的東西,安裝就會遇到不少問題...0rz

Deploy a Private npm Registry Without CouchDB or Redis - 輕量級的解決方案
如果你不想搞一個這麼大的資料庫,只希望有個簡單的方式來放自家開發時會用到的套件,可以參考一下上面這篇文章中提到的 reggie ,算是個輕量級的 npm 替代方案,它本身就是 nodejs module,所以只要把它裝起來就可以跑了,相當適合小開發團隊使用,記得下指令前加上
npm --registry=REGGEIE_URL
或者在 package.json 裡面指定
"publishConfig": { "registry": "http://reggie-url/" }
這樣部屬的時候就會放到reggie上面,其他詳細的功能請參照官網。

有沒有綜合上面兩項優點的方案呢?一種輕鬆安裝 npm 的完整方案。 這世界上就是有許多強者會把事情弄的很簡單(笑),請愛用之前提到的 docker ;p

docker-npmjs,應該還有不少類似的專案

使用方式就是
docker build -t npmjs github.com/terinjokes/docker-npmjs
建完之後再跑起來就好
docker run -d -h HOSTNAME npmjs
簡單到令人不敢置信 XDD。
其實就是把第一種方案的整套安裝 npm 步驟都包在 Dockfile 裡面,然後docker就會建一個獨立的 container 包含整個 npm 的運行環境。

請自行挑選適合自己的方式服用 ;p

update

經過今天的事件之後,似乎有些大廠也打算幫忙建立 npm mirror,可以期待一下 ;p

update 2013/12/8

大概是不少大廠被先前那波炸到,紛紛開始注意這個問題
Yammer也丟出一個用nginx proxy & cache的方式 ;p
A private NPM cache

Ferrari Lee

Read more posts by this author.

Subscribe to Ferrari != Ferrari

Get the latest posts delivered right to your inbox.

or subscribe via RSS with Feedly!