Не удается выполнить работу с помощью grunt-contrib-compass
Итак, у меня есть следующая ситуация.
Когда я использую компас только из CLI, он просто работает и делает именно то, что требуется. Я запускаю compass compile
из той же папки, где находится файл config.rb
(в папке styles
). Он также содержит каталоги sass
и css
.
Здесь мой файл config.rb
:
project_path = '.'
css_dir = "css"
sass_dir = "sass"
images_dir = "../../data/images"
javascripts_dir = "../scripts"
output_style = :compressed
environment = :development
relative_assets = true
Когда я пытаюсь использовать grunt
для этого, я использую следующую конфигурацию в Gruntfile.js
:
compass: {
compile: {
options: {
basePath: 'app/src/styles',
config: 'app/src/styles/config.rb'
}
}
}
Папка app
и Gruntfile.js
расположены на одном уровне.
Когда я запускаю grunt compass
, я вижу следующий вывод:
Running "compass:dist" (compass) task
Nothing to compile. If you're trying to start a new project, you have left off the directory argument.
Run "compass -h" to get help.
Done, without errors.
Если я попытаюсь указать все параметры прямо как:
compass: {
compile: {
options: {
basePath: 'app/src/styles',
sassDir: 'app/src/styles/sass',
cssDir: 'app/src/styles/css',
imagesDir: 'app/data/images'
}
}
}
Выполняет эту задачу, но папка .sass-cache
создается на уровне Gruntfile.js
.
Поэтому я предполагаю, что существует некоторая проблема с параметром basePath
конфигурации.
Я что-то делаю неправильно?
ИЗМЕНИТЬ:
Единственный способ, которым я смог заставить его работать, как и предполагалось, перемещает файл config.rb
на уровень Gruntfile.js
и задает в нем следующие параметры:
project_path = 'app/src/styles'
css_dir = "css"
sass_dir = "sass"
images_dir = "../../data/images"
javascripts_dir = "../scripts"
output_style = :compressed
environment = :development
relative_assets = true
Также я удалил все параметры из "Gruntfile.js", которые относятся к этой задаче. Все еще не уверен, что происходит здесь.
Ответы
Ответ 1
Не пытайтесь установить basePath в конфигурации Grunt, т.е.
compass: {
compile: {
options: {
basePath: 'app/src/styles',
config: 'app/src/styles/config.rb'
}
}
}
Включить:
compass: {
compile: {
options: {
config: 'app/src/styles/config.rb'
}
}
}
А также запустите свой Grunt Compass
с помощью переключателя -verbose (grunt compass --verbose
), чтобы увидеть, какие файлы grunt пытается обработать.
Обратите внимание, что любой параметр, который вы добавляете к своим параметрам в файле Grunt, будет переопределять (или расширять) настройки в файле config.rb.
Просмотрите эту страницу: https://github.com/gruntjs/grunt-contrib-compass
, чтобы узнать больше о grunt-contrib-compass. у них есть информация обо всех возможных вариантах.
Ответ 2
если вам нужен другой базовый путь для вашего проекта, чем ваш config.rb, вы можете установить Path в config.rb(даже относительный)
Пример config.rb
project_path = "../src/main/webapp/"
http_path = "./"
css_dir = "css"
sass_dir = "../library"
images_dir = "assets/images"
fonts_dir = "assets/fonts"
javascripts_dir = "assets/js"
...
relative_assets = true
Пример SCSS
.stylesheet-url {
content:stylesheet-url("style.css");
}
.font-url {
content:font-url("font.woff");
}
.image-url {
content:image-url("image.png");
}
.generated-image-url {
content:generated-image-url("image2.png");
}
Пример CSS
.stylesheet-url {
content: url('style.css');
}
.font-url {
content: url('../assets/fonts/font.woff');
}
.image-url {
content: url('../assets/images/image.png');
}
.generated-image-url {
content: url('../assets/images/image2.png');
}
Мы запускаем Compass 0.12.latest на Win7 x64