1

Я пытаюсь использовать grunt-contrib-compass для проекта AngularJS с несколькими папками приложений. Вот моя основная структура каталогов:Подстановочные знаки в css-пути для grunt-contrib-compass

/root 
    /appA 
    /appB 

    ... 

    /appX 
    /public 
     /modules 
      /moduleName 
       /css 
       /sass 

gruntfile.js хранится в/корень

Мой компас задача устанавливается следующим образом:

compass: { 
    dev: { 
     options: { 
      cssDir: 'app*/public/modules/**/css', 
      sassDir: 'app*/public/modules/**/sass', 
      outputStyle: 'compressed' 
     } 
    } 
} 

Обратите внимание на шаблонные селекторов (*) в «cssDir» и «sassDir».

Когда эта задача выполняется, она успешно находит .scss-файлы в каталоге, указанном для «sass». Однако при создании .css файлов, он создает новую структуру папок в/корень, как так:

/root 
    /app* 
     /public 
      /modules 
       /** 
       /css 

Папка «CSS» остается пустым, а сам файл .css сохраняется в том же каталоге, что и мой .scss-файлы.

В качестве примера, это выход для вывода одного из .scss файлов, когда задача компаса выполняется:

>> File "appStudentHousing/public/modules/studentHousingHome/sass/styles.scss" changed. 
Running "compass:dev" (compass) task 
directory appStudentHousing/public/modules/studentHousingHome/sass 
write appStudentHousing/public/modules/studentHousingHome/sass/styles.css (0.003s) 

Оказывается, что задача признает подстановочные селекторы в опции «sassDir», но он не распознает их в опции «cssDir». Он создает пустую структуру папок со звездочками в фактическом имени папки, а затем по какой-то причине сохраняет исходный файл .css в той же папке, что и файл .scss.

Большое спасибо за любую информацию, которую вы можете предоставить.

+0

Если я правильно понимаю, вы не можете использовать шаблоны глобусов в параметрах 'cssDir' и' sassDir', потому что плагин 'Compass' Grunt' может компилироваться только в один каталог для заданной цели. – Timusan

+0

Простите меня, я все еще новичок в Grunt. Какова данная цель в этом случае? – MattSidor

+0

А, нет проблем. Данная цель здесь 'dev'. «Grunt» всегда определяет свои задачи как сама задача, «компас» в этом случае и несколько целей для задачи. Вы можете пойти дальше и определить больше целей, кроме 'dev' (который также не нужно называть' dev', кстати). Чтобы вызвать конкретную цель задачи, вы называете ее «Задача grunt: target». В вашем случае 'grunt compass: dev'. Просто работает 'grunt compass' также работает здесь, потому что у вас только одна цель определена. – Timusan

ответ

3

Мои комментарии конвертированы в ответ:

В настоящее время compassgrunt плагин может обрабатывать только одиночные каталоги за цель, таким образом, не подстановку, которая соответствовала бы с несколькими каталогами.

Чтобы обойти это ограничение, у вас всегда есть возможность создать mutiple targets внутри вашей задачи compass (Grunt). A target является подразделением task и может использоваться для настройки различных сценариев выполнения.

Два разные targets для compass плагина может выглядеть нечто похожее на это:

compass: { 
    dev: { 
     options: { 
      cssDir: 'app/dev/modules/css', 
      sassDir: 'app/dev/modules/sass', 
      outputStyle: 'compressed' 
     } 
    }, 
    live: { 
     options: { 
      cssDir: 'app/live/modules/css', 
      sassDir: 'app/live/modules/sass', 
      outputStyle: 'compressed' 
     } 
    } 
} 

Это даст вам два targets, dev и live, которые определяют различные параметры. Для выполнения каждого target по отдельности, вы просто вызываете их на командной строки следующим образом:

$ grunt compass:dev 
$ grunt compass:live 

Именование в target полностью зависит от вас, нет никаких строгих конвенций следовать. Если у вас есть один target для task, затем запустить задачу следующим образом:

$ grunt compass 

Выполнение одного target. Вам не нужно явно указывать его.Однако, если у вас есть несколько в вашем task, то Grunt должен выполнить все из них для выполнения указанной выше команды.

И, как вы видели себя, official Grunt documentation дает более подробную информацию о tasks и targets.

+0

Спасибо Тимусан! Ты сырой! \ m/ – MattSidor

+0

Ha! Добро пожаловать, Мэтт, я счастлив, что смогу помочь. – Timusan

Смежные вопросы