使用bower可能會遇到的5個問題

bower是業界使用率比較高的前端組件管理工具,基本上相似於npm,但解決了項目中同一個庫的引入多個版本的問題。你們知道,同一個庫版本並存這對於node來講很正常,但對於瀏覽器來講幾乎是不可接受的。如下是咱們使用bower遇到的5個問題和咱們的取捨與選擇。前端

1、組件版本用master 仍是 tag?

新組件在快速迭代、小範圍使用的狀況下推薦用master
其餘狀況使用tag,上面代碼段裏的v0.0.5就是tag的版本號。node

{                                       
  ...
  "dependencies": {
    "pop": "git@git.qima-inc.com:bower_components/pop.git#v0.0.5",
    "loader": "git@git.qima-inc.com:bower_components/loader.git#v1.1.0",
    "youzanjsbridge": "git@git.qima-inc.com:bower_components/youzanjsbridge.git#v0.0.3"
    ...
  }
  ...
}

2、我要穩定:發現版本不一致怎麼辦?

圖片描述

能夠在數字前面加!,讓這個選擇固定到bower.json裏,下次別人執行bower update 就會直接選擇你選定的版本了。git

圖片描述

以下圖:再一次執行bower udpate 就自動選擇了以前固定下來的版本了。shell

圖片描述

3、如何把全部組件更新到最新版?

能夠安裝個工具 bower-updatenpm

npm install bower-update -g

在工程目錄裏執行bower-update後會挨個讓你確認要不要把某個組件升級到最新版本,最後你的選擇會被寫到bower.json裏。json

clipboard.png

4、版本號必須以 v 打頭麼?

經測試,bower對tag的版本號裏開頭的 v 是作了自適應的,好比:segmentfault

假設
遠程服務器上有2個版本的tag,分佈是 v0.0.1 和 0.0.2
那麼本地bower.json裏
若是要使用0.0.1版本,不管指定版本號爲「#0.0.1」 仍是 「#v0.0.1」
若是要使用0.0.2版本,不管指定版本號爲「#0.0.2」 仍是 「#v0.0.2」
都是能夠的而且能下到正確的代碼瀏覽器

5、bower組件代碼的升級迭代如何管理

咱們的經驗是:
一、組件儘可能拆分地細粒度,一個組件或者一類組件放在一個git倉庫裏 服務器

二、相近範疇和功能的組件在一個git倉庫裏 併發

三、每一個git倉庫由一兩我的主要維護(在gitlab裏的話就是給他設master權限),其餘人要改代碼,須要提交pull request,由負責維護的人審查代碼,合併代碼並拉新的tag出來

咱們發現 gitlab 裏 develop 權限的用戶也能本身拉 tag(要命的是咱們還沒發現如何禁止這個操做),解決有人提了一個分支上來,沒等維護的人合併就基於這個分支拉了個tag出來,本身很歡快的用起來了。實際上這麼玩會有很大的坑的,因此須要團隊內部須要作一個約定:只有維護的人才能夠拉tag

補充下爲何說隨便拉tag會有坑——舉個例子:項目X是A在維護的,B提交了一個分支併發起一個pull request,沒等A接受這個pull request拉出新tag,B直接基於本身的hotfix拉的tag,其餘人依賴這個新tag提供的接口寫了些代碼。而後A以爲B的這個pull request是有問題的,沒有接受,因而極可能後面從master新拉的 tag 不包含這部分接口。因而就出現了 0.1.2 版本不兼容 0.1.1 版本的情形。

本文首發於個人
SegmentFault專欄:http://segmentfault.com/a/1190000004189341
我的技術博客:http://delai.me/code/bower/轉載請註明出處

相關文章
相關標籤/搜索