2012-04-14 42 views
9

假設我有像Bootstrap這樣的外部依賴。我想從那裏導入一些LESS,因爲這樣我可以在我的代碼中使用Bootstrap mixins。由於Meteor已經編譯並連接了我的樹中的所有LESS(正確?),只需複製LESS目錄,然後在一段時間內手動更新它,但這不是一個解決方案。實際上,對於默認的LESS目錄,似乎每個LESS源文件都會出現在輸出中兩次:一次是因爲它是在bootstrap.less中導入的,一次是因爲文件本身。流星中的外部依賴(如bootstrap)

有沒有辦法讓流星忽略一些路徑? public/聽起來很接近;但我真的不想爲bootstrap回購服務。

另外,這可能會解決它的LESS,但什麼是在引導中處理JS擴展的適當方式?

回答

3

我已經想出了一個潛在的解決方案。流星希望一切都捆綁在其目錄...所以,讓我們把它的範圍:)

用下面的目錄結構之外的依賴關係:

. 
|-- ext 
| `-- bootstrap 
`-- myapp 
    |-- .meteor 
    `-- ... 

在我的LESS文件,我做了以下內容:

@BOOTSTRAP: "../../ext/bootstrap/less"; 
@import "@{BOOTSTRAP}/reset.less"; 

這仍然不起作用,但我認爲這歸因於a LESS bug

不幸的是由流星所產生的錯誤信息是完全無用的位置:

[[[[[ ~/Code/igl/igl ]]]]] 

Running on: http://localhost:3000/ 
Errors prevented startup: 
Exception while bundling application: 
ReferenceError: err is not defined 
    at /usr/local/meteor/packages/less/package.js:33:62 
    at [object Object].add_file (/usr/local/meteor/app/lib/bundler.js:193:5) 
    at /usr/local/meteor/app/lib/bundler.js:97:16 
    at Array.forEach (native) 
    at Function.<anonymous> (/usr/local/meteor/app/lib/third/underscore.js:76:11) 
    at /usr/local/meteor/app/lib/bundler.js:96:11 
    at Array.forEach (native) 
    at Function.<anonymous> (/usr/local/meteor/app/lib/third/underscore.js:76:11) 
    at Object.add_files (/usr/local/meteor/app/lib/bundler.js:95:9) 
    at [object Object].on_use (/usr/local/meteor/app/lib/packages.js:136:11) 
Your application is crashing. Waiting for file change. 
+1

FWIW我剛剛結束了黑客變通這樣的:'貓PATH_TO_BOOTSTRAP /更少/ * | grep -v import | egrep -v \^//> bootstrap-concat.less'。作爲罪惡醜陋,但作品的魅力,並讓我導入一切:) – lvh 2012-04-14 15:29:59

+1

最新的流星包括一個boostrap包,不知道如果這可以解決你的問題,但可能如果你做流星更新,然後流星添加boostrap你現在應該有在您的應用上推送twitter。 – climboid 2012-04-29 20:55:12

+0

使用LESS的優勢很容易定製 - 您知道Meteor bootstrap包是否可以從LESS動態編譯? – 2012-10-25 00:05:35

0

從我的經驗,這是一個壞主意,直接包含在流星項目的引導LESS文件:

  • 它會使開發環境變慢,因爲許多額外的文件需要由Meteor轉換並由您的瀏覽器提取。
  • 它不滿足明確依賴於核心引導程序包的第三方程序包的依賴性。如果您添加其中一個,您的項目中最終會包含兩個引導程序。
  • 軟件包資源比項目文件早加載。如果你有一個擴展bootstrap的外部包,它的樣式將在引導之前加載。
  • 必須將所有導入重命名爲.lessimport才能跟上較新的引導版本。
  • 流星(按字母順序)加載引導JavaScript文件的順序不正確,導致Javascript錯誤只能通過重命名文件來解決。

我創建了一個shell腳本,用於根據預編譯的發行版或自己的Bootstrap Git存儲庫克隆生成定製引導程序Meteor包。

你可以在這裏找到它,與使用信息一起: https://github.com/wojas/meteor-package-bootstrap