grunt-contrib-sass: Как динамически добавить подпапку в место назначения?
У меня есть структура каталогов:
views
_static_
some.js
somesass.scss
something.jade
Я надеялся сделать что-то вроде этого:
sass: {
dist: {
options: {
style: 'expanded'
},
files: [{
expand: true,
cwd: 'views',
src: ['*/*.scss'],
flatten: true,
dest: 'views/*/_static_',
ext: '.css'
}]
}
},
Если я просто сделаю dest: 'views'
и удалить flatten:true
затем он, по крайней мере, помещает его в ту же папку, в которой находится файл.scss, но я не могу понять, как сказать "хорошо, добавить"_static_
'к cwd текущего файла и поместите туда.css."Как / я могу сделать это с помощью grunt-contrib-sass?
Если вы удивляетесь, почему я не просто выбрасываю весь скомпилированный CSS в один каталог, это потому, что это для экспериментального сервера для меня, поэтому я не минимизирую или что-то еще.
1 ответ
Для того, чтобы получить подпапку в путь, я должен был использовать rename: function(dest, src){ .. }
, но все не работает, как я предполагаю. Прежде всего, flatten
это не то, что нужно, поэтому мы можем попасть в родительский каталог через src. Другая вещь, о которой нужно знать, это то, что src
внутри rename:
буду иметь whatever.css
как файл, даже если src
снаружи определяется как ['*/*.scss']
, Это работает в нашу пользу, но сбило меня с толку, потому что я ожидал увидеть whatever.scss
, Мне все еще нужно вернуться и поработать над этим, но это сделало работу за меня:
sass: {
dist: {
options: {
style: 'expanded'
},
files: [{
expand: true,
cwd: 'views',
src: ['*/*.scss'],
rename: function(dest, src) {
// src will have .css extension, not scss.
var splitPath = src.split('/');
// Leaves the path preceding the filename in splitPath.
var filename = splitPath.pop();
// There shouldn't be any other subdirectories,
// but added j.i.c. until I can come back to it.
var joinedPath = splitPath.join("/");
var customDest = this.cwd + '/' + joinedPath + '/_static_/' + filename;
return customDest;
},
ext: '.css'
}]
}
Конечный результат:
views
_static_
some.js
somesass.css
(заканчивается в пользовательском месте после запускаgrunt sass
)
somesass.scss
(источник Sass)something.jade