2015-03-18 44 views
1

我正在製作一個程序包,該程序包爲引導提供了一些額外的ui組件。我選擇依賴於(真棒)nemo64:bootstrap包的LESS引導庫。如何在流星包中重新使用引導程序的LESS變量

我的軟件包必須提供額外的LESS文件,這些文件需要一些引導LESS變量(如@brand-success)。最終用戶可以很好地定製這些變量。

nemo64:bootstrap軟件包提供一個文件(custom.bootstrap.import.less),該文件帶有引導變量,供用戶在需要時包含它。這也是用戶需要定製自舉的地方。所以我想將它包含在我的軟件包較少的文件中,但是我不知道,從我的軟件包中,最終用戶將該文件放在哪裏。

我可以假定給出的默認路徑在nemo64:bootstrap包文檔(/client/lib/custom.bootstrap.import.less)上有一個示例,但如果另一個包編寫者做出不同選擇,這些包將不兼容。

有沒有辦法強制特定的文件架構給最終用戶?

回答

1

一種解決方案是不太文件導出爲對資產服務器,並有一個構建插件,將在應用程序中複製文件,以便用戶可以在任何需要的地方使用@import

這樣做的方式與nemo64:bootstrap相同,即a bit hacky,並且需要將包分成兩個不同的包。我在此解釋了一切gist

0

就我所知,軟件包如nemo64 :: bootstrap來編譯Bootstrap的CSS只有意義上的默認原因Less編譯器的metreor編譯每個較少的文件到一個單一的CSS文件。除非Less文件的名稱以下劃線(_)開頭,否則將被編譯。

編譯Bootstrap時,應該只編譯bootstrap.less文件,所有其他文件只是部分文件。部分只能導入,不能在CSS文件中編譯。 Bootstrap的partials文件名不以下劃線開頭,所以使用諸如nemo64 :: bootstrap之類的軟件包來編譯Bootstrap,並使您可以稍後更新Bootstrap。

對於您的軟件包,您可以包含Bootstrap Less代碼您的自我。您還應該內置Less編譯器,並確保它僅編譯您的主文件。一個例子可以在這裏找到:https://atmospherejs.com/bassjobsen/less-pleeease

完成以上步驟後您的少主文件可以包含:

@import "bootstrap"; 
@import "overrides"; 

+0

我不想自己加入更少代碼的代碼,因爲最終用戶可能已經自定義了更少的代碼。或者,也許我錯過了你的答案。但是,由於您的評論引導我轉到另一個解決方案(請參閱我的回答) – 2015-03-21 00:12:22

+0

如果定製意味着應該啓用最終用戶來更改Bootstrap的Less變量,那麼您應該注意到Less使用延遲加載和變量的最後聲明獲勝。所以你可以通過在之後定義它來覆蓋每個變量。另見http://lesscss.org/features/#variables-feature-lazy-loading – 2015-03-22 23:23:04

0

我不完全確定如何進行。但是你可以從註冊一個與你的變量文件具有相同擴展名的句柄開始。這就是我的意思:

var handler = function (compileStep, isLiterate) { 
    // This will get the file path from the handler 
    var variablesFilePath = compileStep._fullInputPath; 
    console.log(variablesFilePath); // print the path to the server when starting 
} 
// handler may also be a callback 
Plugin.registerSourceHandler('bootstrap.import.less', {archMatching: 'web'}, handler); 

這將創建一個你可能能夠使用插件API的處理程序。欲瞭解更多信息,請參閱Meteor API docs

讓我知道這是如何工作的。

相關問題