標(biāo)簽(空格分隔): npm和bower的區(qū)別 前端包管理器
序
關(guān)鍵在于npm的依賴管理是奇特的倒向樹結(jié)構(gòu)(不同于linux越底層依賴越小)。一個(gè)普通的前端包的依賴樹非常冗長(zhǎng),甚至可能觸及windows下256字符的路徑長(zhǎng)度限制。同時(shí)和其它安裝包不能共享依賴代碼。導(dǎo)致文件非常多,不適合前端代碼部署。而bower讓模塊開發(fā)者定義了簡(jiǎn)潔的輸出文件。 npm3 會(huì)從根本上改善這一問題,所有依賴包會(huì)水平處理共享。隨著CommonJS普及,前后端今后統(tǒng)一使用npm是大勢(shì)所趨。
所以二者功能上是一樣的。
兩個(gè)都是包管理器bower偏重于前端一些。
不建議使用bower了。因?yàn)楣俜揭呀?jīng)停止維護(hù)了,他們建議直接使用npm就可以了。
眾所周知,npm(Node Package Manager)是nodejs時(shí)代不可或缺的最好的包管理器,現(xiàn)在已經(jīng)隨nodejs官方包同時(shí)會(huì)安裝到你的設(shè)備上去。只要給項(xiàng)目書寫好package.json放于項(xiàng)目根目錄,在重新部署之時(shí)只需要執(zhí)行 npm install一行簡(jiǎn)單的命令,所有相關(guān)的依賴就能夠自動(dòng)安裝到項(xiàng)目目錄下面,并且還能很方便的對(duì)不同項(xiàng)目的不同依賴包版本進(jìn)行良好、統(tǒng)一的管理。
Bower
NPM和Twitter推出的名為Bower 的包管理器之間到底有什么樣的關(guān)系和區(qū)別呢?(Bower的官網(wǎng)寫到,Bower 是 "A package manager for the web" ,難道說NPM就不是了嗎?)。
其實(shí),在實(shí)際項(xiàng)目中,NPM和Bower都會(huì)被運(yùn)用進(jìn)去。并且Bower的安裝和升級(jí)全都依賴于NPM,使用如下命令就可以全局安裝Bower
npm install -g bower
之后你就可以使用
bower install [#]
類似于NPM的方式,對(duì)于當(dāng)前項(xiàng)目進(jìn)行前端依賴的相關(guān)管理。使用起來和NPM一樣方便快捷。
有人可能會(huì)問,為何不用NPM一個(gè)工具對(duì)前后端進(jìn)行統(tǒng)一的依賴管理呢? 實(shí)際上,因?yàn)閚pm設(shè)計(jì)之初就采用了的是嵌套的依賴關(guān)系樹,這種方式顯然對(duì)前端不友好;而Bower則采用扁平的依賴關(guān)系管理方式,使用上更符合前端開發(fā)的使用習(xí)慣。
不過,現(xiàn)在越來越多出名的js依賴包可以跨前后端共同使用,所以Bower和NPM上面有不少可以通用的內(nèi)容。實(shí)際項(xiàng)目中,我們可以采用NPM作用于后端;Bower作用于前端的組合使用模式。讓前后端公用開發(fā)語言的同時(shí),不同端的開發(fā)工程師能夠更好地利用手上的工具提升開發(fā)效率。
小結(jié)、
其中,與NPM最大的區(qū)別在于,NPM主要運(yùn)用于Node.js項(xiàng)目的內(nèi)部依賴包管理,安裝的模塊位于項(xiàng)目根目錄下的node_modules文件夾內(nèi)。而Bower大部分情況下用于前端開發(fā),對(duì)于CSS/JS/模板等內(nèi)容進(jìn)行依賴管理,依賴的下載目錄結(jié)構(gòu)可以自定義。
ps:部分截取網(wǎng)絡(luò)資源的整理