Компилировать файлы 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';
}
}
]
}
}