2016-04-18 16 views
0

私のウェブページのモバイル版のデスクトップモジュールを再利用しようとしています。すべてのmodule.less参照variables.less - 主にIDE(PhpStorm)のためだけでなく、私が本当に好きな一見で依存関係を持つためにも。ハウツーは実際に変数をインポート/オーバーライドせずにLESSファイルを参照する

今まで私は、このレッスンルールが実際に参照していると思っていました。実際はそうではありません。ファイルは本当に(1回)含まれていますが、出力はありません(lessドキュメントを参照)。その結果、私のモバイル変数は無効になります。

├ desktop/ 
│ ├ modules/ 
│ │ └ foobar.less 
│ │  > @import (reference) "../variables.less" 
│ ├ main.less 
│ │ > @import "variables.less" 
│ │ > @import "modules.less" 
│ ├ modules.less 
│ │ > @import "modules/foobar.less" 
│ └ variables.less 
│  > @bundle: 'desktop' 
│ 
└ mobile/ 
    ├ main.less 
    │ > @import "variables.less" 
    │ > @import "modules.less" 
    ├ modules.less 
    │ > @import "../desktop/modules/foobar.less" 
    └ variables.less 
     > @bundle: 'mobile' 

モバイルmobile/main.lessをコンパイルした後、結果は、@bundle'desktop'に等しくなります。

のみ可能 "参照"変数はありませんか?他の提案は歓迎されます。

+0

あなたは '*何も含まれていますが* variables.less'ん変数?もしそうでなければ、あなたはおそらく完全に誤解して、 '(参照) 'を悪用するでしょう。これは実際には「[インポートされた*スタイル*をコンパイル済みの出力に追加しない]」(http://lesscss.org/features/#import-options-reference)です。 *変数*(CSS *スタイルではない)に関しては、実際に重要なのは[遅延評価](http://lesscss.org/features/#variables-feature-lazy-loading)です。特定の例では、これは最終的に異なる 'variables.less'ファイルをインポートする順番になり、'(参照) 'とは何の関係もありません。 –

+1

可変変数の寿命の短縮、範囲の変更、上書き/上書きの詳細については、https://github.com/less/less.js/issues/2442#issuecomment-73841148を参照してください。 –

+0

@ seven-phases-maxはい、言及したように私は 'reference'の実際の動作を誤解しました。そして、はい、私のファイルには変数だけが含まれています。実際には両方のパッケージで同じですが、場所によって値が異なります。だから、実際に継承がうまくいくでしょう。そのGithubのリンクに感謝します。ディスカッションは非常に興味深いものです。特に、 '&{@import" package ";}' –

答えて

0

は最後に、私は非常に簡単な解決策を考え出した:

単にmobile/variables.lessの先頭にdesktop/variables.lessをインポートします。これは、デフォルトのLESSビヘイビアがで一度だけインポートされるために機能します。。それはすでに、すべてのモジュールの前に輸入されているので、デスクトップモジュールの@importルールが(再)インポートが発生することはありません - したがって、任意の変数を上書きすることはありません。

├ desktop/ 
│ ├ modules/ 
│ │ └ foobar.less 
│ │  > @import (reference) "../variables.less" 
│ ├ main.less 
│ │ > @import "variables.less" 
│ │ > @import "modules.less" 
│ ├ modules.less 
│ │ > @import "modules/foobar.less" 
│ └ variables.less 
│  > @bundle: 'desktop' 
│ 
└ mobile/ 
    ├ main.less 
    │ > @import "variables.less" 
    │ > @import "modules.less" 
    ├ modules.less 
    │ > @import "../desktop/modules/foobar.less" 
    └ variables.less 
     > @import (reference) "../desktop/variables.less" 
     > @bundle: 'mobile' 
関連する問題