Как запустить grunt sass для нескольких каталогов с подстановочными знаками в Drupal 8
В моем проекте Drupal 8 у меня есть пользовательские модули, где внутри каждой темы у меня есть две директории scss и css, так что структура выглядит так:
- modules
- custom
- my_module_1
- scss
- css
- my_module_2
- scss
- css
- themes
- my_theme
- Gruntfile.js
в моем Gruntfile.js я хочу сказать sass пройти через каждый пользовательский модуль и запустить в папке scss в качестве источника, а папка css должна быть местом назначения.
до сих пор у меня есть такая задача:
sass: {
prod:{
options: {
sourceMap: false,
outputStyle: 'compressed',
includePaths: ['scss']
},
files: {
'../../modules/custom/my_module_1/css/file1.css': '../../modules/custom/my_module_1/scss/file1.scss',
'../../modules/custom/my_module_1/css/file2.css': '../../modules/custom/my_module_1/scss/file2.scss',
'../../modules/custom/my_module_2/css/file1.css': '../../modules/custom/my_module_2/scss/file1.scss'
}
}
}
как вы можете видеть, что это избыточно, как сделать его чище в одной общей команде (возможно, с подстановочными знаками, но я пока не могу понять это)
Благодарю.
1 ответ
Решение
На всякий случай, если кто-то ищет тот же ответ в будущем.
В итоге я решил решить эту проблему следующим образом:
sass: {
prod:{
options: {
sourceMap: false,
outputStyle: 'compressed',
includePaths: ['scss']
},
files: {
expand: true,
src: ['../../modules/custom/*/scss/*.scss'],
dest: '/css',
rename: function(dest, src){
var fname = src.substring(src.lastIndexOf('/'),src.lastIndexOf('.'));
return src.substring(0, src.lastIndexOf('/scss')) + dest + fname + '.css';
},
ext: '.css'
}
}
}