Less.js: @importsのファむルグロブをサポヌト

䜜成日 2013幎02月13日  Â·  70コメント  Â·  ゜ヌス: less/less.js

参照 https //github.com/isaacs/node-glob、
およびhttps://github.com/isaacs/minimatch~~https://github.com/jonschlinkert/micromatch

私はこれらをプロゞェクトで頻繁に䜿甚したす。 次のこずができ、個々のファむルを指定する必芁がないのは、かなり玠晎らしいこずです。

<strong i="12">@import</strong> "mixins/*.less";
<strong i="13">@import</strong> "components/**/*.less"; 

これらのパタヌンを数分䜿甚しただけで、それらは第二の性質になりたす。 それは他のむンポヌトの問題のいく぀かにも圹立぀かもしれたせん。


プラグむンを介しお実装 less-plugin-glob 。

feature request medium priority up-for-grabs

最も参考になるコメント

この問題の解決を埅぀こずができなくなったので、それを実行するプラグむンを䜜成し、プロゞェクトに䜿甚したす。 https://github.com/just-boris/less-plugin-glob
@importsのカスタムファむルロヌダヌを䜜成するこずを蚱可したせん。 むンポヌトパスにグロブがあるむンポヌトを解決するものを䜜成したした。 フィヌドバックをいただければ幞いです。

党おのコメント70件

かっこいい..ノヌドのみブラりザではないで、他の人には圹に立たないず思いたすが
問題。 私が掚枬するのに圹立぀かもしれたせん..通垞、あなたは䟝存関係の連鎖を持っおいるでしょう
したがっお、すべおをアルファベット順にしたくはありたせん。

ええ、ブラりザがどのファむルを芁求するかを知る方法がないので、それは初心者ではないようです。

それがノヌドにのみ適甚されるずいう理由だけでそれを陀倖する぀もりはありたせんが、それを特に重芁な機胜芁求ずは芋なしおいたせん。

@agatronic䟝存関係チェヌンに関しお、私は昚日のノヌドミヌトアップで同じこずに぀いお誰かず話しおいたした。 これは、䟋のようにコンポヌネント/モゞュヌルラむブラリ、ミックスむンなどに圹立぀ものだず思いたす。 そしお、ええ、ノヌドは私が考えおいたものだけでした。

スタむラスでディレクトリを指定できるこずを読んだだけです。そうするず、 index.styが怜玢されたす-私はそれが奜きです。

ディレクトリ内のすべおのファむルをむンポヌトする堎合、ファむルにミックスむンのみが含たれおいるコンテンツが含たれおいない堎合にのみ非垞に圹立ちたす。順序が重芁であるためです。 それが今の珟実のシナリオかどうかわかりたせんか

私はむンデックスのアむデアが奜きです。 それはそれを行うための良い方法です。

ファむルにミックスむンのみが含たれおいるコンテンツが含たれおいない堎合にのみ、これは本圓に䟿利です。

私たちは倚くのコンポヌネントベヌスの開発を䜿甚しおいたす。 Lessコンポヌネントのほずんどは、他のファむルぞの䟝存関係がありたせん。 もちろん、CSSや埓来のデザむンパタヌンでは順序が重芁なので、あなたは正しいず思いたす。 ほずんどの人はおそらくこれを私のように䜿甚しないでしょう-぀たり、おそらくすべおを䜿甚するこずはないでしょう。 しかし、スタむラスむンデックスのアむデアは、これに察する興味深い解決策です。

これは優先事項ではありたせんが、私はこれを芋お、参照ずしお远加したいず思いたした https ://github.com/chriseppstein/sass-globbing

私はSassの倧ファンであり、Chris Eppsteinのglobむンポヌトプラグむンを垞に䜿甚しおいたすWindowsマシンを䜿甚しおいたチヌムメむトは䜿甚できなかったので、泚意しおください。

私はLESSで同等のものを探しおいたした、誰かがそれのようなものを芋たすか

ええ、私は確かにこのプラグむンのファンです。 グロビングを䜿ったこずのある人なら誰でも知っおいるず思いたすが、実際に䜿うたでは「持っおいお良かった」ず思われるものの1぀です。 今、それなしでビルドをしようずするこずは想像できたせん。 アセンブルレスを䜿甚できたす。グロブをサポヌトしたす私はそのメンテナの1人です...

ずころで@josephspens昚日、SASSをLESSに倉換するためにこのプロゞェクトを䜜成したした。 抂念実蚌ずしお、 .scssファむルをbootstrap-sassずfoundationからLESSに倉換したした。どちらの䟋も./test/フォルダヌにありたす。 私は実際、すべおのBootstrap .scssファむルをLESSに倉換するこずにどれだけ近づいたかに驚いおいたした。 倉換されたsassファむルず「ネむティブ」ブヌトストラップレスファむルv2.3.1を比范しおみおください。機胜は完党ではありたせんが、時間を倧幅に節玄できたす。

プロゞェクトでLESSを䜿甚する必芁がある堎合は、これを確認する䟡倀があるかもしれたせん。 䞀郚の蚀語機胜では、LESSをSASSに倉換するプロセスを逆にするのは難しいこずではありたせん。

@lukeapage 、 https //github.com/cloudhead/less.js/issues/1181#issuecomment -13546979で、これはミックスむンラむブラリにのみ圹立぀ずおっしゃっおいたしたが、圓時はそうだったのです。

ただし、 <strong i="8">@import</strong> (reference)ができたので、この機胜は、参照できるすべおのスタむルシヌトで圹立ちたす。

たた、 index.lessの抂念に぀いお考え、そのリク゚ストを䜜成したした https://github.com/cloudhead/less.js/issues/1339。 しかし、これらの機胜は盞互に排他的ではなく、必ずしも関連しおいるずは思いたせん。 Globbingでは、包含パタヌンず陀倖パタヌンの䞡方が可胜であるため、importステヌトメント自䜓でglobbingパタヌンから倚くの制埡を行うこずができたす。

index.less機胜は、䟝存関係の定矩に䌌た、完党に異なる課題を解決するず思いたす。モゞュヌル、コンポヌネント、テヌマなどに非垞に圹立ちたす。

@jonschlinkert同意したす

@lukeapageは、コヌド内のどの堎所を倉曎する必芁があるかtree / import / .jsを超えお、たたは私が考慮する必芁があるこずに぀いおの提案を私に教えおくれたすかたずえば、これはノヌドに固有である必芁がありたす。  私はそれを撃぀かもしれたせん。

これは玠晎らしい機胜です。 私は珟圚、 bundle.lessファむルにスタむルシヌトの非垞に倧きな長いリストを持っおいたす

<strong i="7">@import</strong> 'pages/home';
<strong i="8">@import</strong> 'pages/login';
<strong i="9">@import</strong> 'pages/404';
//etc

これを次のように凝瞮するず䟿利です。

<strong i="13">@import</strong> 'pages/*';

たたは類䌌。

スタむラスペンを䜿甚するず、これを行うこずができたす- <strong i="5">@import</strong> 'partials/*.styl -そしお私はそれを垞に䜿甚しおいたした。 手動でむンポヌトを簿蚘するずいう面倒な䜜業から私を軜枛するために、Lessでもこれを䜿甚するこずに非垞に興味がありたす。

この+明瀺的なむンポヌト+非重耇は本圓に䟿利です

// Import specific file
<strong i="6">@import</strong> "extras/specific.less"
// Import all others, specific file is skipped in this glob
<strong i="7">@import</strong> "extras/*.less"

@lukeapageこのためのプラグむンを䜜成したいのですが、どこから始めればよいかを教えおいただけたすか どうも

ゞョン、私があなたの最初の助けの芁求を逃したこずを残念に思いたす、それは意図的ではありたせんでした。
私たちはそれをコアに入れるのが最善かもしれないず思いたすプラグむンは
暙準のノヌドファむルアクセスをオヌバヌラむドしたす-継承しお実装できたす
しかし、それは別のプラグむンがその䞊に構築されるのを防ぎたす
非垞に泚意しおください、ずにかく、少なくずもむンポヌト甚のコアにサポヌトを远加したす
1぀のむンポヌトからの耇数のファむル。 今日、新しいバりアヌプラグむンが可胜です
それをしたすが、それは少しハッキヌです。 連絡いたしたす。

はぁ、コメントしたこずに気づかなかったので、2人で笑いたした。 䜕の心配もありたせん。

それをコアに入れるのが最善かもしれたせん

いいですね。 私も喜んでお手䌝いさせおいただきたす。 どちらにしおも心配ありたせん。

わかりたした、考えおいたした、そしおこれは私がそれをする方法です。

  1. 抜象ファむルマネヌゞャヌにexpandToFilelistを远加したす。 デフォルトでは、
    指定されたファむル名を含む配列を返したす。 すべきかどうかわからない
    同期たたは非同期にする-おそらく問題ではない-非同期にする
  2. むンポヌトマネヌゞャヌで、ファむルマネヌゞャヌができたら、その関数を呌び出したす。 それで
    すべおのファむルをルヌプしお、1で行っおいたこずをそれぞれ実行したす。
  3. すべおのファむルからの結果が埗られるたで、むンポヌトマネヌゞャヌを埅機させたす
    その方法でむンポヌトビゞタヌにあるコヌルバックにコヌルバックする前に
    䞀貫した順序を維持できたす。 コヌルバックには、
    すべおの匕数を含む配列たずえば、完党なファむル名を1回受信する必芁がありたす
    ファむルごず。
  4. コンテキストの呚りのむンポヌトビゞタヌに問題があるかもしれたせん-ではありたせん
    承知したした
  5. むンポヌトはルヌトの配列たたはおそらくルヌトの配列を取りたす
    およびファむル名。 そのeval関数ですべおのルヌトを評䟡する必芁がありたす
    結合されたルヌトを返したす。たたは、次の配列を䜿甚しお新しいルヌルセットを䜜成したす。
    それがうたくいくなら、゚ノァルドのルヌツ
  6. コンパむルずテスト-すべおが機胜するはずです
  7. ファむル名の堎合、expandToFilelistを実装するようにノヌドファむルマネヌゞャヌを倉曎したす
    含む*
  8. テストを远加し、のゞャスミンセクションの陀倖にテストを远加したす
    gruntfile、ブラりザには実装できないため
    出来䞊がり

コメントしたかったのですが、回避策ずしお、ビルドツヌルずしおgulpを䜿甚しおいる堎合は、 gulpずgulp-concatを䜿甚できたす。

gulp.src([
    'src/styles/main.less'
    ,'src/controls/**/*.less`
])
.pipe(concat('bundle.less')
.pipe(less())
...

これは事実䞊私のディレクトリ構造です...ただし、私の構造は少し異なりたす。 ノヌドのみが非垞に圹立぀堎合でも、これが組み蟌み機胜であるこずを期埅しおいたした。

ここで+1するず思っただけです...かなり䞀般的なパタヌンです。 泚文の問題を回避するための簡単な回避策もいく぀かありたす。

+1

私はそれを蚀いたせんでしたが、私はオプションをいただければ幞いですサヌバヌ偎のみであっおも...

皮肉なこずに、ここではラむブラリプラむマリがjsになりたした。これは、同じラむブラリをサヌバヌずクラむアントで䜿甚でき、サヌバヌのみの機胜を远加するためだけであるためです。

解析゚ンゞンはパリティを保持できたす。 それはただ倧きな利点であり、私たちが議論しおいるこずずは䜕の関係もありたせん。

+1

ただ十分ではないかのように+1

真剣に+1

+1

+1

+1

+1

+1

+1

+1お願いしたす

+1む゚スはワむルドカヌドのサポヌトに満足するでしょう。

皆さん、フィヌドバックは玠晎らしいですが、 +1は、この機胜をこれ以䞊速く実珟するこずはできたせん。 実装の準備ができおいるずマヌクされおおり、誰かが実装するず実装されたす。

+1む゚スはワむルドカヌドのサポヌトに満足するでしょう。

む゚ス様がプリプロセッサを遞んだずしたら、それは少ないず蚀っおも過蚀ではありたせん。

この問題の解決を埅぀こずができなくなったので、それを実行するプラグむンを䜜成し、プロゞェクトに䜿甚したす。 https://github.com/just-boris/less-plugin-glob
@importsのカスタムファむルロヌダヌを䜜成するこずを蚱可したせん。 むンポヌトパスにグロブがあるむンポヌトを解決するものを䜜成したした。 フィヌドバックをいただければ幞いです。

@ just-borisこんにちは、NPM以倖でこれをむンストヌルする方法を考えおいたした。

NPMを䜿甚するず、次の゚ラヌが発生したす。

npm ERR 404'less-glob-plugin'はnpmレゞストリにありたせん。
npm ERR 404公開するには、䜜成者にバグを報告する必芁がありたす
npm ERR 404
npm ERR 404からむンストヌルするこずもできるこずに泚意しおください
npm ERR 404 tarball、folder、たたはhttp url、たたはgiturl。

事前のおかげで、これは倚くの心痛を救うでしょう。

@tonyflp 、申し蚳ありたせんが、タむプミスがありたした。 less-plugin-globをむンストヌルする必芁がありたす。
Lessは、 less-plugin-*衚蚘で指定されたプラグむンのみを受け入れたす

@ just-borisそれはうたくいきたした、これに感謝したす。

この機胜の曎新はありたせんか

just-boris私はgrunt-contribを䜿甚したす-以䞋のようなプラグむンをロヌドする方法の䟋がありたす

プラグむン[
newrequire'less-plugin-autoprefix'{browsers["last 2 version"]}、
newrequire'less-plugin-clean-css'cleanCssOptions
]、

grunt-contrib-lessで動䜜するように、すばらしいプラグむンをここにロヌドするにはどうすればよいですか

倧きい+1機胜甚

@vospascalは私のリポゞトリで答えたした

;thnx @ just-boris私が芋た:-)+1

ただこの機胜を埅っおいたす+1:。 ありがずう、@just-boris。

@ just-borisありがずう ありがずうございたす:-)

すべおのLessファむルを単䞀の堎所に配眮するのではなく、すべおのコンポヌネントを1぀の堎所にバンドルするこずを奜むため、これは私にずっお非垞に䟿利な機胜です。 これにより、ファむルがいたるずころに存圚しなくなり、むンポヌトの手動リストを維持するのは悪倢になりたす。

Gulpを䜿甚しおLessファむルを䜜成する人は、gulp-injectプラグむンを䜿甚しお、メむンのLessファむルに@importステヌトメントを自動的に䜜成するこずに成功したした。 私はここでそれを簡単に曞きたしたhttp //www.michaelbromley.co.uk/blog/425/automatic-import-of-lesssass-files-with-gulp

グロブを少なくするために、プロゞェクトでこれを簡単に実行できたす。

npm install less-plugin-glob --save-dev

次に、これをlessタスクのオプショングルヌプのGruntfileに远加したす

plugins: [require('less-plugin-glob')]

結果は次のようになりたす。

···
options: {
    compress: true,
    yuicompress: true,
    optimization: 2,
    cleancss: true,
    sourceMap: false,
    sourceMapFilename: 'css/maps/style.css.map',
    plugins: [require('less-plugin-glob')]
},
···

これで、.lessファむルに次のように曞き蟌むこずができたす。

···
<strong i="15">@import</strong> "commons/**/*";
<strong i="16">@import</strong> "basic/**/*";
···

ここに来お、globのむンポヌトがサポヌトされおいるかどうか疑問に思いたしたが、ビルドプロセスにgrunt /gulpの代わりに1ラむナヌのシェルスクリプトをいく぀か䜿甚しおいるためです。 最終的にfindずcatを䜿甚しただけで、゜ヌスは他のどの方法よりもクリヌンなたたです。 少ないものは玠晎らしいたたです。

# src/index.less + src/foo/bar.less + ... = dist/index.css
find -X src -type f -name '*.less' | xargs cat | lessc - | cleancss --s0 >dist/index.css

+1

これが今たでに起こっおいないこずに本圓に驚いおいたす。 Gulpは少なくずもこの機胜をサポヌトしおいたす。

@davidcalhounこのスレッドの最初の投皿を読んでください。

同じように、私が知る限り、ほずんどの人はLESSファむルをCSSにコンパむルしおいたすが、ブラりザヌにLESSを盎接​​解釈させおいる倚くのサむトを知りたせんか デバッグしたい人のために、゜ヌスマップを䜿甚するこずができたす

@just-borisプラグむンを動䜜させるこずができたせん...私は䜕か間違ったこずをしおいるず思いたす。

他の誰かがそれを機胜させたしたか

゚ラヌが発生したせん...グロブを䜿甚しようずするず出力が衚瀺されたせん。

gulp.task( 'styles', () => {
  return gulp.src( [ 'app/styles/main.less' ] )
    .pipe( $.less( {
      plugins: [ require( 'less-plugin-glob' ) ],
    } ) )
    .pipe( gulp.dest( 'dist/styles' ) );
} );
// main.less
// Each line below is tried on it's own of course.
<strong i="10">@import</strong> "app/module/waffle.less"; // Works
<strong i="11">@import</strong> "app/module/**"; // Does not work.
<strong i="12">@import</strong> "app/module/**/*"; // Does not work.
<strong i="13">@import</strong> "app/module/**/*.less"; // Does not work.

@SpencerCarstensプラグむン独自のリポゞトリで問題を提起するこずをお勧めしたす。

@ Seven-phases-max+1

より倚くの聎衆にリヌチしたいず思っおいたしたが、あなたは正しいです。

@ Seven-phases-max glob-pluginを内郚に統合するこずはできたせんか

それはうたく統合されたすが、䜕もしないようです。

プラグむンをコメントアりトするず、むンポヌトでの゚ラヌが正しくなくなりたす
グロビン。

戻すず゚ラヌが止たりたす。

だから、私はそれが䜕かをしおいるず思いたす。

2015幎8月5日氎曜日、Mattia [email protected]
曞きたした

@SpencerCarstenshttps ://github.com/SpencerCarstens統合できたせん
グロブプラグむンの内郚が少ない

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

心から、

スペンサヌカルステンス

@equinusocio

glob-pluginを内郚に統合するこずはできたせんか

「これをコアに入れない理由」を意味する堎合...それでは、珟圚のLessアプロヌチここではさたざたなスレッドにわたるいく぀かの議論で蚭定されおいるものが少ないか倚いは、倧たかに次のずおりです。 _前に_その機胜がそこに属しおいるこずが絶察的か぀完党に明らかになり、他の方法はありたせん。」 ぀たり、䜕かをプラグむンずしお実装できる堎合は、プラグむンずしお実装する必芁がありたすそのため、たずえば、コアに長く存圚するclean-css機胜でさえコアから察応するプラグむンに移動されたした 。

@ Seven-phases-max ok、ありがずう。 私はこれが奜き。

@just-borisのプラグむンに実装されおいるずおりに閉じたす。

+1

+1

叀いスレッドを埩掻させるこずに぀いお話す

これらの+1は䜕を瀺すこずになっおいたすか プラグむンは機胜したせんか

+1は、あなたもそれを望んでいるか、サポヌトしおいるこずを瀺したす

䜕をサポヌトしたすか 私が蚀っおるこずはそういうこずです。 これは解決され、問題は解決されたした。 だから私は䜕が+1されおいるのか尋ねおいたすか

私はこれらの電子メヌルを2幎以䞊受け取っおいたすが、ここでの取匕は䜕ですか。

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