Селекторные символы в пути css для grunt-contrib-compass
Я пытаюсь использовать grunt-contrib-compass для проекта AngularJS с несколькими папками приложений. Вот моя основная структура каталогов:
/root
/appA
/appB
...
/appX
/public
/modules
/moduleName
/css
/sass
gruntfile.js хранится в /root
Моя задача по компасу настроена следующим образом:
compass: {
dev: {
options: {
cssDir: 'app*/public/modules/**/css',
sassDir: 'app*/public/modules/**/sass',
outputStyle: 'compressed'
}
}
}
Обратите внимание на селекторы подстановочных знаков (*) в "cssDir" и "sassDir".
Когда эта задача выполняется, она успешно находит файлы.scss в каталоге, указанном для "sass". Однако при создании файлов.css создается новая структура папок в /root, например:
/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.
Большое спасибо за любую информацию, которую вы можете предоставить.
1 ответ
Мои комментарии преобразованы в ответ:
В настоящее время compass
grunt
Плагин может обрабатывать только одиночные каталоги на одну цель, поэтому нет глобализации, которая бы соответствовала нескольким каталогам.
Чтобы обойти это ограничение, у вас всегда есть возможность создать несколько targets
внутри вашего compass
задача (Grunt
функциональность). 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
, Вам не нужно явно указывать это. Однако, если у вас есть несколько targets
в вашем task
, затем Grunt
должен выполнить их все по порядку при работе с вышеуказанной командой.
И, как вы сами видели, чиновник Grunt
документация дает вам более подробную информацию о tasks
а также targets
,