我可以配置一个grint-contrib-less任务来编译成并行结构吗?

时间:2013-07-25 15:29:36

标签: css less build-process gruntjs

目前我们正在使用grunt-contrib-less来处理我们的LESS文件编译作为Grunt任务。较少的文件存储在与此类似的结构中:

assets/
    styles/
        base.less
        client/
            client.less
            device/
                tablet.less
                phone.less

我们的Grunt配置有以下内容:

less: {
    options: {
        paths: 'assets/',
        yuicompress: false,
        ieCompat: true,
        require: [
            'assets/styles/base.less'
        ]
    },
    src: {
        expand: true,
        cwd: 'assets/',
        src: [
            'styles/**/*.less'
        ],
        ext: '.css',
        dest: 'assets/'
    }
},

目前,这是将所有生成的css文件安装到与其来源的原始文件相同的目录中。我们想要做的是将它们吐出到/ assets / css /目录中,但具有相同的相对结构。例如:

assets/
    css/
        base.css
        client/
            client.css
            device/
                tablet.css
                phone.css

是否有可以实现此目的的grunt-contrib-less配置?

2 个答案:

答案 0 :(得分:4)

更简单的方法似乎是:

less: {
    options: {
        paths: 'assets/',
        ieCompat: true,
        require: [
            'assets/styles/base.less'
        ]
    },
    src: {
        expand: true,
        cwd: 'assets/styles/',
        src: [
            '**/*.less'
        ],
        ext: '.css',
        dest: 'assets/css'
    }
},

答案 1 :(得分:3)

我能够通过以下Gruntfile.js

达到预期的效果
var path = require('path');

module.exports = function(grunt) {

  grunt.initConfig({
    less: {
      options: {
        paths: 'assets/',
        yuicompress: false,
        ieCompat: true,
        require: [
          'assets/styles/base.less'
        ]
      },
      src: {
        expand: true,
        cwd: 'assets/',
        src: [
            'styles/**/*.less'
        ],
        ext: '.css',
        dest: 'assets',
        rename: function(dest, src) {
          return path.join(dest, src.replace(/^styles/, 'css'));
        }
      }
    },
  });

  grunt.loadNpmTasks('grunt-contrib-less');

}

说明

虽然它不在grunt-contrib-less文档中,但是有更多可用于文件对象的功能。在我回答这个问题之前,我没有意识到有这么多。它们上的文档链接属于资源。

资源

Configuring tasks - Building the files object dynamically