問題背景
NPM安裝公有模塊自然就不必說了直接npm install 模塊名字
就可以了,而之所以可以直接這樣安裝寇蚊,原因就是模塊是直接發(fā)布在npm的公有倉(cāng)庫(kù)中的(npm publish
)拣宏,npm直接從倉(cāng)庫(kù)通過網(wǎng)絡(luò)獲取到就好了。但是履腋,有的時(shí)候我們不希望把代碼直接發(fā)布到公有倉(cāng)庫(kù)中企软,對(duì)于企業(yè)來說,內(nèi)部的非開源模塊肯定是不需要發(fā)布到公有倉(cāng)庫(kù)中的瞳脓。所以呢塑娇,我們就要尋找一種可以讓npm安裝私有模塊的辦法,這里所謂的私有模塊劫侧,就是模塊內(nèi)容(代碼)不能被公開訪問(下載)到埋酬。那么怎么辦呢?
解決方案一:購(gòu)買npm付費(fèi)賬號(hào)
這是最簡(jiǎn)單的辦法烧栋,根據(jù)npm的價(jià)格方案写妥,只要是付費(fèi)用戶(不論是哪一種),都可以下載和發(fā)布不限量的私有模塊审姓。所有的操作都一樣珍特,只是npm校驗(yàn)的賬號(hào)的時(shí)候發(fā)現(xiàn)你是付費(fèi)的,那么就允許你發(fā)布私有模塊魔吐,對(duì)你來說所有操作都一樣扎筒。花錢買時(shí)間嘛酬姆,而且也不貴嗜桌,最便宜是7美金/月
。
解決方案二:自建npm倉(cāng)庫(kù)
這個(gè)方案的意思就是:連倉(cāng)庫(kù)都是私有的辞色,模塊自然是私有的骨宠。這個(gè)方案好處就是倉(cāng)庫(kù)可以建在自己公司內(nèi)部,訪問速度自然杠杠的相满,而且想怎么定制就怎么定制层亿。不過呢,構(gòu)建成本也是有的立美,而且需要機(jī)器匿又。具體可以自行g(shù)oogle方法,一般稍微大規(guī)模的團(tuán)隊(duì)/公司會(huì)采取這種辦法悯辙。
解決方案三:利用npm安裝機(jī)制和git倉(cāng)庫(kù)
這個(gè)方案最經(jīng)濟(jì)實(shí)惠琳省,因?yàn)樽詈玫那闆r下是免費(fèi)的
(是的,你沒有聽錯(cuò))躲撰。怎么做呢针贬?
首先,npm install
支持 npm install <git remote url>
拢蛋,其中git remote url
的格式是<protocol>://[<user>[:<password>]@]<hostname>[:<port>][:/]<path>[#<commit-ish>]
桦他。換句話說,假設(shè)你的代碼托管在bitbucket
(可以免費(fèi)托管無限多的私有項(xiàng)目)中谆棱,那么你就可以通過npm install git+ssh://git@bitbucket.org/用戶名/項(xiàng)目名.git#版本號(hào)
快压。這種方式唯一的不足的地方就是,你必須要確保安裝這個(gè)私有模塊的機(jī)器有訪問這個(gè)私有模塊git倉(cāng)庫(kù)的權(quán)限垃瞧,換句話說就是:這臺(tái)機(jī)器的公鑰必須添加到git倉(cāng)庫(kù)/賬戶中蔫劣。如果你嫌添加公鑰麻煩,也可以通過git+https://username:password@bitbucket.org/用戶名/項(xiàng)目名.git#版本號(hào)
這種方式个从,但是缺點(diǎn)就是用戶名和密碼都暴露出來了脉幢。
好了,以上就是三種用npm安裝私有模塊的方法嗦锐。沒有絕對(duì)的哪種方式更好的說法嫌松,選擇適合你的才是最好的!