2014-01-25 71 views
3

如何指定用於涼亭組件的默認文件,以便通過grunt-bower-install正確注入?爲組件配置Grunt-Bower-Install路徑

我正在與datejs合作,根據您的本地化他們有不同的文件。我想包括的文件不在bower_components根/ datejs目錄,所以我得到的錯誤:

datejs was not injected in your file.

Please go take a look in "app/bower_components/datejs" for the file you need, then manually include it in your file.

我想我最難避免硬編碼datejs到我的索引文件並沒有真正想要將「date-en-US.js」文件移動到datejs目錄的根目錄中。

這是datejs涼亭組件的結構。

bower_components 
└── datejs 
    └── build 
     └── ... 
     └── date-en-US.js 
     └── ... 
    └── src 
    └── test 

和公正的情況下,這會有所幫助,這是位於datejs的.bower.json文件涼亭組件路徑:

{ 
    "name": "datejs", 
    "homepage": "https://github.com/datejs/Datejs", 
    "_release": "7bdddb55d6", 
    "_resolution": { 
    "type": "branch", 
    "branch": "master", 
    "commit": "7bdddb55d69719e42c358c3a2b7df706ff3090f8" 
    }, 
    "_source": "git://github.com/datejs/Datejs.git", 
    "_target": "*", 
    "_originalSource": "datejs", 
    "_direct": true 
} 

回答

7

對派對稍遲,但您可以覆蓋回購的主要屬性,以定義您想要注入到您的應用程序的任何文件。要做到這一點,你需要使用overrides財產YOURbower.json

試試這個:

{ 
    "name": "name", 
    "version": "x.x.x", 
    "dependencies": { 
    "datejs": "x.x.x" 
    }, 
    "overrides": { 
    "datejs": { 
     "main": "build/date-en-US.js" 
    } 
    } 
} 
+0

確實!關於[wiredep](https://github.com/taptapship/wiredep#bower-overrides)的更多解釋,請參閱[grunt-wiredep](https://github.com/stephenplusplus/grunt-wiredep#behind-幕後)。 Thx @nknj – pgu

1

嘗試在繁重的文件中添加此:

'bower-install': { 
    fileTypes: { 
     fileExtension: { 
      detect: { 
       typeOfBowerFile: /-en-US.js/ 
      } 
     } 
    } 
} 

我沒有試過,我的正則表達式可能關閉。但根據grunt-bower-install readme,它指出See [wiredep's](https://github.com/stephenplusplus/wiredep) readme for more options of customization並在那裏顯示使用上述配置。基本上 - grunt-bower-install不知道要尋找什麼。此選項似乎告訴它該信息。

3

我也很沮喪這幾次。我在我的案例中發現的是,「grunt bower-install」需要.bower.json中的一個「main」條目。它是一個字符串或字符串數​​組,指向應該安裝的相關JS和/或CSS文件。

在你的情況下,我沒有看到「主」,並建議你創建一個包含所需的datejs文件。我會建議源文件,如果你打算使用grunt縮小/等。您可以查看其他成功的組件以查看「主」條目的示例。

我懷疑有些組件沒有提供條目,因爲它們沒有單一的使用模式(即可以混合和匹配所需的文件),但這只是我的推測。

+0

謝謝!我有一種感覺就是這樣。但是,如果我將來更新我的涼亭組件,會發生什麼情況? .bower.json文件中的更改是否會被覆蓋? – adam8810

+1

可恥地我承認,我可能更像是一個小甜甜,然後你設想。如果一位更有資格的專家看到這個和評論,我會更新我的迴應。我還沒有測試過更新用例。爲了保護自己,我強制將.bower.json文件放入我的源代碼控制中,至少可以看到任何更新。在一個案例中,我開發了一個github問題,因爲我認爲他們可以自己改變它。但是,「main」可能是許多文件或文件組合之一的用例似乎不受Bower的支持。然而,我沒有足夠的資格來提出這一申訴。 – corporatedrone

+0

@corporatedrone,作爲一個單獨的答案回答了這個問題 – nknj