26

私はgruntを使用して、以下を使用してすべてのlessファイルをcssファイルに変換します。

less: {
  development: {
    files: {
      "css/*.css": "less/*.less"
    }
  }
}

これはバージョン0.3.0で機能しましたが、v0.4.0にアップグレードしたため、機能しなくなりました。

次のコード(宛先で*を使用しない)は両方のバージョンで機能するため、問題は宛先ファイルのスターにあります。

less: {
  development: {
    files: {
      "css/test.css": "less/*.less"
    }
  }
}

何か案が ?

4

1 に答える 1

45

これはバグではありません。destGruntは、その構成を使用する際のグロブをサポートしなくなりました。ただし、次のような「ファイル配列」形式を使用できます。

files: [
  {
    expand: true,
    cwd: 'src',
    src: ['*.less'],
    dest: 'assets/css/',
    ext: '.css'
  }
]

また、Bootstrapのようなライブラリを使用していて、各LESSファイル(コンポーネント)を個別の個別のCSSファイルにビルドしたい場合、「箱から出して」実行するのは非常に簡単ではありません。その理由は、各LESSファイルには、および(および、他のファイルで参照されているため、およびのような他のいくつかのステートメント)に対する独自の@importステートメントが必要になるためです。variables.lessmixins.lessforms.lessnavbar.less

これを本当に簡単にするには、アセンブルなしのGruntプラグインを試してください(免責事項:私はプロジェクトのメンテナーの1人であり、less.jsのコアチームにも属しています)。assemble-lessは、Tyler Kellenによるgrunt-contrib-lessのフォークですが、必要なことを実現するいくつかの実験的な機能が追加されています(安定性が必要な場合は、grunt-contrib-lessを使用してください)。例えば:

// Project configuration.
grunt.initConfig({

  less: {
    // Compile all targeted LESS files individually
    components: {
      options: {
        imports: {
          // Use the new "reference" directive, e.g.
          // @import (reference) "variables.less";
          reference: [
            "bootstrap/mixins.less", 
            "bootstrap/variables.less" 
          ]
        }
      },
      files: [
        {
          expand: true,
          cwd: 'bootstrap/less',
          // Compile each LESS component excluding "bootstrap.less", 
          // "mixins.less" and "variables.less" 
          src: ['*.less', '!{boot,var,mix}*.less'],
          dest: 'assets/css/',
          ext: '.css'
        }
      ]
    }
  }
  ...
}

このimports機能は基本的に、指定され@importたステートメントをソースファイルに追加します。このreferenceオプションを使用すると、ミックスインまたはを介して具体的に参照されるスタイルのみを出力しながら、他の少ないファイルを「参照」できます:extend。Bootstrapはforms.less、buttons.lessなどの他のコンポーネントからスタイルを相互参照するため、ここに示されているよりもいくつかのファイルを参照する必要がある場合があります(例については、アセンブルなしのGruntfileを参照してください)。

したがって、assemble-less上記の例の構成でタスクを実行すると、assets/cssフォルダーは次のようになります。

  • alerts.css
  • badges.css
  • breadcrumbs.css
  • button-groups.css
  • buttons.css
  • carousel.css
  • close.css
  • code.css
  • component-animations.css
  • dropdowns.css
  • forms.css
  • glyphicons.css
  • grid.css
  • input-groups.css
  • jumbotron.css
  • labels.css
  • list-group.css
  • media.css
  • modals.css
  • navbar.css
  • navs.css
  • normalize.css
  • pager.css
  • pagination.css
  • panels.css
  • popovers.css
  • print.css
  • progress-bars.css
  • responsive-utilities.css
  • scaffolding.css
  • tables.css
  • theme.css
  • thumbnails.css
  • tooltip.css
  • type.css
  • utilities.css
  • wells.css

これに役立つ機能は他にもありますがimports、Gruntfileに直接ディレクティブを追加できるため、この機能は非常に強力です。

于 2013-03-24T16:05:13.567 に答える