Я пытаюсь использовать 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.
Большое спасибо за любую информацию, которую вы можете предоставить.
Если я правильно понимаю, вы не можете использовать шаблоны глобусов в параметрах 'cssDir' и' sassDir', потому что плагин 'Compass' Grunt' может компилироваться только в один каталог для заданной цели. – Timusan
Простите меня, я все еще новичок в Grunt. Какова данная цель в этом случае? – MattSidor
А, нет проблем. Данная цель здесь 'dev'. «Grunt» всегда определяет свои задачи как сама задача, «компас» в этом случае и несколько целей для задачи. Вы можете пойти дальше и определить больше целей, кроме 'dev' (который также не нужно называть' dev', кстати). Чтобы вызвать конкретную цель задачи, вы называете ее «Задача grunt: target». В вашем случае 'grunt compass: dev'. Просто работает 'grunt compass' также работает здесь, потому что у вас только одна цель определена. – Timusan