Как запустить 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'
    }
  }
}
Другие вопросы по тегам