Компилировать файлы LESS с Grunt из нескольких каталогов в один по заданному пути

Используя Grunt, я хотел бы скомпилировать файлы.less, поступающие из разных динамических источников, в один файл назначения.css по заданному пути. Например, мои исходные файлы организованы следующим образом:

app
 |_ modules
       |_ module1
       |     |_ branding
       |           |_ brand1
       |           |    |_ file1.less
       |           |    |_ file2.less
       |           |_ brand2
       |                |_ file1.less
       |                |_ file2.less
       |_ module2
             |_ branding
                   |_ brand1
                   |    |_ file1.less
                   |_ brand2
                        |_ file1.less

И я хотел бы скомпилировать их в месте назначения следующим образом:

app
 |_ styles
      |_ branding
            |_ brand1.css
            |_ brand2.css

В настоящее время я экспериментирую с таким заданием, как следующее:

less:{
  branding: {
    files: [
      {
        expand: true,
        cwd: "<%= yeoman.app %>/app/modules/",
        src: ["**/branding/**/*.less"],
        dest: "<%= yeoman.app %>/app/styles/branding/",
        ext: ".css"
      }
    ]
  }
}

который явно не работает, потому что он копирует исходное дерево.

Является ли это возможным?

1 ответ

Для тех, кто ищет решение аналогичной проблемы, в настоящее время я решил ее с помощью функции "переименовать":

    less:{
      branding: {
        files: [
        {
            expand: true,
            cwd: "<%= yeoman.app %>/app/modules/",
            src: ["**/branding/**/*.less"],
            dest: "<%= yeoman.app %>/app/styles/branding/",
            ext: ".css",
            rename: function(dest, src) {
                var match = '/branding/',
                    brandized = src.replace(src.substring(0, src.indexOf(match)+match.length), '');
                return dest + brandized.substring(0, brandized.indexOf('/')) + '.css';
            }
        }
        ]
      }
    }
Другие вопросы по тегам