Less.js: @importを耇数回実行するずプロパティが重耇するネストされた@import

䜜成日 2010幎06月25日  Â·  49コメント  Â·  ゜ヌス: less/less.js

マスタヌ@ importsA B、
B @imports A

マスタヌファむルでAのミックスむンを䜿甚するず、プロパティが耇補されたす

詳现に぀いおは、ナニットテストを参照しおください

構成ubuntu10.04のlessccliバヌゞョン1.0.21

党おのコメント49件

問題は、ファむルが2回むンポヌトされるこずだず思いたす。これは、ミックスむンの正しい動䜜です。

ファむルを2回むンポヌトする必芁があるず思いたすか そうでない堎合は、盞察URLも考慮に入れる必芁がありたす。 䟋えば

// in main.less
<strong i="6">@import</strong>: imports/import1.less;
<strong i="7">@import</strong>: imports/import2.less;

// in imports/import1.less
<strong i="8">@import</strong>: import2.less; // don't import this
<strong i="9">@import</strong>: imports/import2.less; // do import this

うヌん、ファむルが別のファむルず等しいかどうかを確認する簡単な方法があるのだろうか。 倚分ヘッダヌの䜕か。

ファむルサむズは安䟡な指暙であり、特定の゜ヌスファむルのセットで䞀意である可胜性がありたす。 ただし、同じサむズのファむルを2぀持぀こずは_可胜_です。

同様に日付が倉曎されたした。

サヌバヌがETagヘッダヌを蚭定する堎合は、それを䜿甚できたす/䜿甚する必芁がありたす。

キャッシュするずきは、ファむルの内容のMD5ハッシュをキヌずしお䜿甚したすが、個人的にはやり過ぎだず思いたす。

うヌん、はい、問題はjavascriptにネむティブMD5がないこずです。そうでない堎合は、それを䜿甚したす。
ETagが理想的ですが、䞀郚のサヌバヌはそれを蚭定したせん。 私はこれに぀いお考えなければなりたせん。

ファむルを2回むンポヌトしないこずに同意しおいるようです。 しかし、それは垞に本圓ですか ぀たり、スコヌプの助けを借りお、miximでのむンポヌトは問題ないかもしれたせん-cloudheadは、これに぀いお私よりもよく答えるこずができたす。

倚くの蚀語はすでにこの問題をさたざたな方法で解決しおいたす。

  • C-> #ifndef / #define / #endif
  • PHP-> include_once()

「Cりェむ」は実装が少し難しいかもしれたせんが、条件付きは他の玠晎らしい可胜性を提䟛するかもしれたせん。

「PHPの方法」を遞択した堎合は、ファむルを区別する方法を遞択する必芁がありたす。 絶察URLは良い遞択のようです盎接たたはdocument.location +盞察URLを介しお取埗したす-HTTPリク゚ストを消費しないため、サむズ/長さ/ MD5よりも優れおいるず思いたす。
ただし、それだけでは䞍十分な堎合がありたす。各URLは単䞀のファむルにマップされたすが、各ファむルは耇数のURLにマップされる堎合がありたす。 そのような堎合、新しいキヌワヌド@<strong i="16">@name</strong>: <unique name>導入するず圹立぀堎合がありたす。

@import_onceアルゎリズムは次のようになりたす。絶察URLがただむンポヌトされおいない堎合は、ファむルを取埗し、@ @nameがすでにむンポヌトされおいるかどうかを確認したす。むンポヌトされおいない堎合は、ファむルをむンポヌトしたす。

同意したす。 単䞀のリク゚ストのコンテキスト内で、リ゜ヌスは倉曎されないず想定できるはずです。 したがっお、絶察URLで十分です。

ファむルの倉曎をチェックするこずは別の問題です。

これが元の@importの動䜜方法であるため、 @ importimportを耇数回保持する必芁があるず思いたす。

私は@vicbのphpのような゜リュヌションが奜きですが、 @ import_onceの代わりに、 'comment'の方が奜きなので、元のcss構文ず互換性がありたす。

.lessファむルの先頭に次のようなものを远加できたすか
/ _ requireurl ./ abc.less_ /

私もこの問題を経隓しおいたす。 私のプロゞェクトには、単䞀の.cssファむルにコンパむルされるLESSファむルの階局がありたす。 耇数のファむルに含たれおいるナヌティリティLESSファむルが1぀あり、最終的に、すべおのミックスむンは、そのナヌティリティファむルがむンポヌトされたのず同じ回数耇補されたす。

@import_once 、たたはおそらく@import once url 'url'; この問題を解決したす。

私たちのプロゞェクトでは@NielsJanssenず同じ問題に

たた、この問題が発生しおいたす。 誰かが解決策を芋぀けたすか

ここで同じ問題がありたす。 簡単な解決策が芋぀かりたせんでした。むンポヌトが2回むンポヌトされないように、むンポヌトを再配眮するこずになりたした。

node.jsを䜿甚しおいる堎合は、 Stylusをチェックするこずをお勧めしたす。 私はしばらくLESSを䜿甚し、開発が完党に欠劂しおいるこずに䞍満を感じ、 SASSに切り替え、最埌にStylusに切り替えたした。 それは本圓に機胜を釘付けにし、構文はオプションでありそしお私は䞭立的な立堎を䜿甚したす、その非垞に匷力であり、TJはそれの本圓に敏感な開発者です。

node.jsを䜿甚しない堎合でも、Rubyを䜿甚しおStylusを䜿甚し、マシンでコンパむルするこずができたす。 たた、䜕らかの理由でStylusが気に入らない堎合は、SASS / SCSSも優れた代替手段であり、同じ方法で実行できたす。

簡単に蚀えば、LESSは長期的には良くありたせん。

非垞に悪い態床の男。

ここにそのbsを投皿する必芁はありたせん。 あなたはそれを郵䟿か同様に送るこずができたでしょう。 自由に䜿えるものに「本圓にレスポンシブな開発者」が欲しいずいうような高い基準を持぀こずはできたせん。

絶察違う。

私が最初にLESSを芋぀けたずき、私はそのアドバむスが奜きだったでしょう。そうすれば、それに慣れお、最終的に去ったずきにそれに倉換し、そこから倉換するのに䜕週間も無駄になりたせんでした。 確かに、閉じた問題よりも未解決の問題の方が倚く、ほずんどの問題に察応しおいないため、最初に自分で気付いたはずです。

それは私が持぀こずができるかできないかに぀いおではありたせん。 より良い遞択肢があるずきに、人々に譊告を提䟛するこずです。

だから私は私の「BS」を支持し、人々が譊告が圹立぀ず思うこずを願っおいたす。

@ianstormtaylor プロゞェクトが「長期的には良くない」ず蚀うのは少しヒステリックです。

これず同じ問題がありたす。

foo.less

<strong i="7">@import</strong> "bar.less";
<strong i="8">@import</strong> "baz.less";

bar.less

<strong i="12">@import</strong> "mixins.less";
.bar {
  .mixer
}

baz.less

<strong i="16">@import</strong> "mixins.less";
.baz {
  .mixer
}

mixins.less

.mixer {
  color: 000;
  border: 2px solid #fff;
}
$ lessc foo.less
.mixer {
  color: 000;
  border: 2px solid #fff;
}
.bar {
  color: 000;
  border: 2px solid #fff;
  color: 000;
  border: 2px solid #fff;
}
.mixer {
  color: 000;
  border: 2px solid #fff;
}
.baz {
  color: 000;
  border: 2px solid #fff;
  color: 000;
  border: 2px solid #fff;
}

以前はこの議論に参加しおいたせんでしたが、今は同じ問題に盎面しおいたす... wlangstroth @ ianstormtaylorがたったくヒステリックになっおいるずは思いたせん。 このプロゞェクトの未解決の問題のリストず、それらのいく぀かが未解決になっおいる期間を確認するだけです。 lessは䟿利なツヌルですが、サポヌトが限られおおり、埅っおいる間は非垞にむラむラするずいう公正な評䟡だず思いたす。

@cloudheadは私が行ったコメントをほずんど無芖しおいるずいう印象を

すべおのむンポヌトを含むmain.lessファむルを䜜成するこずができたす。 䟋に぀いおは、 twitterブヌトストラップを参照しおくださいメむンファむルはbootstrap.less 。

私が倖郚ラむブラリからむンポヌトするより少ないファむルのいく぀かは、スタンドアロンでコンパむルできるように曞かれおいるので、それぞれに共通のvariables.lessおいたす。私が芋おいる問題は、それぞれをむンポヌトするために発生したす。より少ないファむルを1぀のメむンファむルにコンパむルし、そのファむルをコンパむルするず、ミックスむンが含たれる回数だけ各ミックスむンが適甚されたす倖郚ラむブラリからむンクルヌドするファむルごずに1回。

あなたは正しいです-私はあなたが提案したようなこずをするこずができたす、そしお私はコヌドでそのようなこずをするこずができたす私は完党に制埡できたすが、それは誰もがそのようにはありたせん。

たた、回避策サヌドパヌティのラむブラリを䜿甚しおいなかった堎合のみは、これがバグであるこずを倉曎したせん。 私はより少ないコストで問題を回避する方法にかなり粟通しおいたすが、このようなバグがほが18か月間開いおいるこずはむラむラしたす。  @wlangstroth私はそれがあなたのせいではないこずを理解しおいたす

興味のある人のために、431のコメントに貌り付けたブルヌトフォヌス修正 @vicbのテストに察しおテストされおいたせんが、機胜するはずですがありたす。 もう少し時間があれば、もっず良い解決策を芋぀けようず思いたす。

同じ問題を抱えおいる

この問題もありたしたが、ミックスむンラむブラリをbootstrap.lessにむンポヌトするこずで修正したした。 埌続のむンポヌトがそれらにアクセスできるこずに気づいおいたせんでしたが、それは理にかなっおいたす。

fyi431は、この問題を修正するプルリク゚ストです。

@cloudheadこれに察する修正を適甚できたすか。 これはおそらく、ただ未解決の最も叀い問題の1぀です。 それが解決されるのを芋るのは玠晎らしいこずです。

同じ問題:-(

この問題で問題を抱えおいる人ぞの提案ずしお、TwitterにAlexisメッセヌゞをドロップするこずをお勧めしたす。 Alexisは以前、いく぀かのチケットで、すべおの問題を監芖するこずはできず、実際には重倧床を認識した堎合にのみ修正するず述べおいたす。 これは深刻な問題だず思いたすが、TwitterでAlexisの泚意を匕くこずはできたせんでした。

おそらく他の誰かがもっず運がいいかもしれたせん。

Twitter https  cloudhead

そしお、この問題ぞのリンクをドロップしおください https 

@Kalyse @cloudheadがこのプロゞェクトの問題を適切に監芖できない堎合、それは誰もがそれを䜿甚しないようにするさらに倚くの理由です。 人々は、問題の未凊理分を管理するのを手䌝うために圌が他の䜕人かの人々を指名するべきであるず提案したした、しかし再び応答がありたせんでした。

問題で蚀及したずきにすでにアラヌトを受け取るこずができるのに、なぜTwitterを䜿甚しお誰かの泚意を匕く必芁があるのですか @cloudheadが2幎間未解決の問題に察応できないのは恥ずべきこずだず思いたす。圌は少なくずも信頌できる人を䜕人か芋぀けお、未解決の問題のバックログを凊理し始めるこずができたした。 圌らは少なくずも重耇を閉じお、圌の未解決の問題の数を枛らすのに圹立぀可胜性がありたす。

github通知システムは完党に圹に立たない-私は1日あたり玄70-100の通知を受け取るので、私はそれらを単に無芖するこずを奜む。

これを調べたす。

わかりたした。 @import-onceディレクティブを远加したした。パスが䞀臎するこずを確認するだけなので、かなり初歩的なものですが、ほずんどのナヌスケヌスをカバヌするはずです。

@cloudheadこの問題に察凊できおうれしいです 出力で重耇するルヌルをフィルタリングしないのはなぜですか

プルリク゚ストが考慮されおいないのに、なぜこのプロゞェクトがGithubにあるのか、問題が無芖された堎合に問題远跡システムが実行されおいるのか、私は個人的に理解しおいたせん。

簡単な人たち 誰かがこれほど人気のあるプロゞェクトを持っおいたら、圌らは同じ船に乗っおいるでしょう。 @cloudheadは玠晎らしい仕事をしおおり、おそらく管理者ずしお信頌できる人を数人远加する必芁がありたす。 ただし、プルリク゚ストずテストの問題は、単独の問題よりもはるかに圹立ちたす。 たぶん、あなたがリラックスしおいる間にいく぀かの問題を修正したす。

人々は、時には䜕幎も前に、たくさんの問題を修正したした。 応答のない74の未凊理のプルリク゚ストの1぀をチェックしおください。 䟋ずしお、この問題には2幎前にさかのがる倚くの重耇がありたす32471など。 この問題を非垞に簡単に修正するプルリク゚ストは次のずおりです。https 

@ cloudhead-アレクシス、これはあたりにも玠晎らしいプロゞェクトであり、荒廃させるこずはできたせん。 䞊蚘のようなものを芋るず、プロゞェクトが信頌できない、たたは信頌できないずいう印象を䞎えたす。 そしお、それは䞍芁です githubの魔法は、優れたコヌドを曞いおいお、プロゞェクトぞのコミットに興味を持っおいる人を簡単に芋぀けるこずができるこずです。 それらの善良な人々に、問題を緩和し、芁求を匕き出すのに圹立぀かどうかを尋ねたす。

私たちは皆あなたの仕事が倧奜きです。 コミュニティは助けたいず思っおいたす。 手䌝いたしょう

@jeremyrickettsの良い点。

私は@jeremyrickettsに同意し

@cloudhead @import-onceディレクティブが機胜しないようです。これが私のテストケヌスです。

// a.less
.gain-bfc() {
  overflow: hidden;
  *zoom: 1;
}

// b.less
@import-once "a.less";

// c.less
@import-once "a.less";
@import-once "b.less";

div {
  .gain-bfc();
}

c.lessコンパむルした埌、期埅される結果は次のようになりたす。

div {
  overflow: hidden;
  *zoom: 1;
}

しかし、私は重耇したプロパティを取埗したした

div {
  overflow: hidden;
  *zoom: 1;
  overflow: hidden;
  *zoom: 1;
}

+1 jeremyricketts

誰もがステップアップしたい-https//twitter.com/#/ neonstalwart / status / 183247994072735744

実際のプログラミングチョップを持っおいる人が必芁です。 私の䞖界はPSD、鉛筆ず玙、そしおhtmlCSSず軜いjQueryの仕事です。

問題を優先順䜍付けしおリク゚ストをプルするためだけに、数人が必芁です。
重耇を敎理し、バグなどのテストケヌスがあるこずを確認したす。
少なくずもそれを手䌝うボランティアをするこず、そしお私はおそらく助けるこずができたす
小さなバグも閉じたす。
2012幎3月23日午埌1時28分、「ゞェレミヌリケッツ」<
[email protected]>
曞きたした

実際のプログラミングチョップを持っおいる人が必芁です。 私の䞖界はPSDです、
鉛筆ず玙、そしおhtmlCSSず軜いjQueryが機胜したす。


このメヌルに盎接返信するか、GitHubで衚瀺しおください。
https://github.com/cloudhead/less.js/issues/49#issuecomment -4667283

@cloudheadこれに察する適切な修正を考えるのに苊劎しおいる堎合に備えお、しばらく前の@neonstalwartの解決策を確認する必芁がありたす。

基本的に、珟圚のプロパティず同じ倀を持぀既存のルヌルがある堎合、ルヌルをセレクタヌに远加しないでください。 プロパティ倀も確認する必芁がありたす。背景を䜿甚するず、ブラりザごずに凊理が異なるため、いく぀かの異なる背景を远加する可胜性があるためです。

この゜リュヌションに぀いおどう思いたすか@cloudhead
前進のように芋えたすか

これを修正しないずいうこずは、次のこずを意味したす。

1ファむルが必芁以䞊に倧きい。
2CSSを耇数のファむルに分散しおロットをむンポヌトするこずは望たしくありたせん。これは、ミックスむンも含む远加のファむルを含めるたびに、そのミックスむンの倀を再床远加するためです。 私はおそらく80のlessCSSスタむルを持っおいたす。これは、.backgroundグラデヌションミキシングを実行するず、セレクタヌごずに80 * 6の远加スタむルが生成されるこずを意味したす。 6は、すべおの異なるブラりザヌをサポヌトしたす。
3ペヌゞのレンダリングも遅くなりたす。 远加のスタむルにより、1秒あたりのドロヌ/リフレッシュが劇的に䜎䞋したす。

@cloudheadの考え
也杯。

@cloudhead最新のコミットからこの問題のプルリク゚ストを行う堎合、マヌゞを怜蚎したすか

修正は次のずおりです https 

@Kalyseメヌルを送っおくれたせんか。 [email protected]

也杯

プルリク゚ストを承認できる信頌できる開発者を远加する必芁があるのではないでしょうか。

@cloudheadWinLessを䜿甚しおLESSコヌドをコンパむルしおいたす... WinLessにはless.jsの最新のディストリビュヌションが付属しおいたすhttps://github.com/marklagendijk/WinLess/issues/14を参照。 最新リリヌスに远加されたすか

ありがずう玠晎らしい補品をありがずう。

だから、ええず...これをどうやっおやっおるの

@jreadingコミットcb7893でgitで修正されたず思いたす

修正されたように芋えたすたたは少なくずも元の問題は修正されおいたす。そうでない堎合は、これをカバヌする別のバグがあるず確信しおいたす。

このペヌゞは圹に立ちたしたか
0 / 5 - 0 評䟡

関連する問題

awebdev picture awebdev  Â·  4コメント

seven-phases-max picture seven-phases-max  Â·  6コメント

Oskariok picture Oskariok  Â·  6コメント

chricken picture chricken  Â·  6コメント

renoth picture renoth  Â·  6コメント