2013-06-19 56 views
27

Bower docs says爲什麼要在涼亭組件?

N.B.如果您未創作旨在供他人使用的軟件包(例如,您正在構建Web應用程序),則應始終將已安裝的軟件包檢入源代碼管理。

有沒有人有一個很好的答案爲什麼?

如果我想提出一個web應用程序,我不希望我的回購堆滿了圖書館X的版本更新

我只是想更新bower.json依賴。我認爲大多數項目都會有一個構建步驟或類似的,例如咕嚕聲。構建步驟將確保在構建之前調用bower安裝/更新,以便這些文件用於連續/縮小等,或者甚至是簡單複製到某個dist文件夾。

我錯過了什麼嗎?

回答

28

這是鎖定您的依賴項,以防止依賴關係不良打破您的應用程序或遠程被阻止部署。即使你有構建步驟,也可能發生這種情況,因爲你可能沒有對每個構建進行全面測試,而自動化測試不能捕捉到所有內容,特別是不是可視化迴歸。多個開發人員也可能擁有不同版本的依賴關係。通過確保依賴關係,確保每個人都保持相同的版本。我還發現查看差異是確保在依賴關係樹中沒有引入惡意的好方法。

在節點世界npm shrinkwrap部分解決了這個問題,但還沒有做校驗和匹配。鮑爾目前有一個開放的ticket實施相同。

您可以在此博客帖子閱讀更多關於它:Checking in front-end dependencies

+0

是的我想我可以使用1.2.3而不是〜1.2.3或類似的。 (或者,如果我信任庫使用semver,那甚至可以)但是我想如果庫X有bower.json依賴於庫Y並且使用> = 2.3.4或類似的話,那我就麻煩了。將期待收縮包裝功能。 –

+3

是的,因爲標籤和版本可以被覆蓋,所以甚至深度鎖定版本是不夠的。這就是爲什麼'npm shrinkwrap'需要deps校驗和匹配的原因,這就是我們從一開始就需要在Bower熱縮包裝中進行的。 –

+0

這與遊戲開發的原因相同。您不必隨時升級軟件包,因此在特定版本中凍結或「縮小」它們是有意義的,以防延遲部署或構建。 –

0

這個答案非技術問題,而是一個實際的原因不涼亭的部件進行檢查。

我寧可推薦bower包在bower.json中鎖定,而不是檢查這些包。因爲相信我,你無法在電腦上下載和解包數千個文件。運行速度慢的計算機在非常大且深的文件路徑中存在問題。在這個互聯網的世界裏,我相信下載軟件包總是很容易,而不是隨身攜帶。

這只是一個偏好問題。這一切都來自經驗。我已經在Github上使用了bower組件進行了一個項目檢查,並且在上傳和下載時更糟糕。我通過一個相對較新的Mac做到了。