Я пытаюсь использовать 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.
Большое спасибо за любую информацию, которую вы можете предоставить.
cssDir
иsassDir
, потому что плагинCompass
Grunt
может компилироваться только в один каталог для каждой заданной цели. - person Timusan   schedule 10.12.2014dev
.Grunt
всегда определяет свои задачи как саму задачу,compass
в данном случае, и несколько целей для задачи. Вы можете пойти дальше и определить другие цели, помимоdev
(кстати, ее также не нужно называтьdev
). Чтобы вызвать конкретную цель задачи, вы вызываете ее с помощьюgrunt task:target
. В вашем случаеgrunt compass:dev
. Простой запускgrunt compass
также работает здесь, потому что у вас определена только одна цель. - person Timusan   schedule 10.12.2014appX
, а затем я могу настроить уникальную задачуgrunt-contrib-watch
для каждой цели с явно заданными путями к папкам sass/css — подстановочные знаки не нужны. Большое спасибо Тимусан. Если вы опубликуете свой комментарий как ответ, я отмечу его зеленой галочкой. - person MattSidor   schedule 10.12.2014compass
не будет поддерживать несколько подстановок каталогов. Плагинwatch
действительно работает точно так же (на самом деле это функциональность, предоставляемаяGrunt
, поэтому все плагины имеют возможность множественного назначения). Вы можете указать разные цели для автоматического просмотра и запуска компиляции при изменении файла. - person Timusan   schedule 11.12.2014