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
Другие вопросы по тегам