2013-06-18 99 views
24

從GitHub克隆後,有沒有辦法讓涼亭運行一個軟件包咕嚕聲?如何讓涼亭建立包裝?

我正在嘗試使用Bower,但我使用的軟件包之一是Bootstrap擴展,x-editable。 問題是,雖然其他軟件包將完整的內置版本推送到github,所以當由Bower安裝時,您有一個內置版本x-editable,希望您運行一個grunt文件來構建軟件包。

這是其他包管理器中的常見做法,例如npm,但我可以找到如何讓Bower在安裝時進行構建。這意味着我需要另一種機制來完成軟件包的安裝。

回答

23

建立在安裝上是一種反模式,強烈建議在Node中禁止。像Node一樣,Bower軟件包應該是預先構建的。這是因爲最終用戶不必關心軟件包需要什麼預處理器或構建系統。

你最好的選擇是說服作者預先構建,分叉並自己做,或者在安裝組件後手動構建。

Bower團隊計劃添加發布軟件包到服務器的能力,類似於它在npm中的工作方式。這對於需要構建步驟的包來說會更好。

+5

大多數NPM 「重」 包我使用有一定的構建階段後安裝的。提交預構建的跨平臺(通常是本機)代碼似乎更糟糕的選擇。儘管如此,即使Bower不鼓勵它的最佳做法,我認爲這種選擇應該適用於特殊情況。 –

+2

本機擴展是Node中的例外,因爲它們沒有預編譯的基礎結構,但正在考慮中。一個選項已經可用。鮑爾有一個API。所以你可以自由地破解你自己的解決方案,但對於普通用戶來說,這不是一個好的選擇,也不會在Bower中被推薦或支持。 –

+1

@Sinder我的問題是我是否可以強制一個未發佈的包的構建階段?例如x-editable,它在Bower倉庫上,但爲了使用它,你需要運行它的grunt文件。 –

-2

你可以使用作曲家處理後安裝:

bower.json:

{ 
    "dependencies": { 
     "bootstrap": "*" 
    } 
} 

composer.json:

{ 
    "scripts" : { 
     "post-install-cmd" : [ 
      "bower install --no-color", 
      "lessc bower_components/bootstrap/less/bootstrap.less public/script/bootstrap.css" 
     ] 
    } 
} 

然後我跑composer install

Loading composer repositories with package information 
Installing dependencies (including require-dev) 
Nothing to install or update 
Generating autoload files 
bower warn Package bootstrap is still using the deprecated "component.json" file 
bower cloning git://github.com/twitter/bootstrap.git 
bower cached git://github.com/twitter/bootstrap.git 
bower fetching bootstrap 
bower checking out bootstrap#v2.3.2 
bower warn Package jquery is still using the deprecated "component.json" file 
bower copying C:\Users\renadm\AppData\Roaming\bower\cache\bootstrap\9d49e0aedf207bebd028e26cc86a9e58 
bower cloning git://github.com/components/jquery.git 
bower cached git://github.com/components/jquery.git 
bower fetching jquery 
bower checking out jquery#1.8.3 
bower copying C:\Users\renadm\AppData\Roaming\bower\cache\jquery\29cb4373d29144ca260ac7c3997f4381 
bower installing bootstrap#2.3.2 
bower installing jquery#1.8.3 

在Bower完成安裝後,LESS編譯器會處理.less文件,並在我的公用文件夾中放置一個不錯的bootstrap.css。使用Closure Compiler可以爲JavaScript文件做類似的事情。

+0

與使用其他構建工具有何不同?像咕嚕? –

4

有3個掛鉤,安裝後可以解決你的問題,如果由於任何原因你不能像@Sindre Sorhus指出的那樣預建。

在.bowerrc做:

{ 
    "scripts": { 
     "preinstall": "<your command here>", 
     "postinstall": "<your command here>", 
     "preuninstall": "<your command here>" 
    } 
} 

https://github.com/bower/bower/blob/master/HOOKS.md

+0

在1.3.12中不起作用 – dopatraman