Настройка папки назначения Compass, если в исходной папке есть подпапки
Я использую Compass через grunt для компиляции файла SASS. Моя структура каталогов выглядит так:
project/
Gruntfile.js
package.json
sass/
part1/
part1.sass
css/
И мой Gruntfile.js:
grunt.initConfig({
pkg: grunt.file.readJSON('package.json'),
compass: {
std: {
options: {
sassDir: 'sass',
cssDir: 'css',
specify: 'sass/part1/part1.sass',
raw: 'disable_warnings = true\n'
}
}
}
});
Когда я запускаю свой gruntfile, Compass выводит project/css/part1/part1.css
, но я хочу, чтобы он выводил на project/css/part1.css
вместо. Как я могу это сделать? Прямо сейчас я использую хук on_stylesheet_saved для перемещения файла, но это не очень элегантно.
Надеюсь, вопрос ясен, и заранее спасибо.
1 ответ
Я воссоздал вашу среду. Я мог бы упростить Gruntfile.js
даже больше:
module.exports = function(grunt) {
// Main project configuration
grunt.initConfig({
// Read NPM package information
pkg: grunt.file.readJSON('package.json'),
// Compass
compass: {
std: {
options: {
cssDir: 'css',
sassDir: 'sass'
}
}
}
});
// Load the grunt tasks
grunt.loadNpmTasks('grunt-contrib-compass');
// Compile production files
grunt.registerTask('std', [
'compass:std'
]);
// Default task(s)
grunt.registerTask('default', 'std');
};
То, что вы получаете, это ожидаемое поведение компаса.
Чтение немного через readme https://github.com/gruntjs/grunt-contrib-compass, я вижу:
Компас работает на уровне папок. Из-за этого вы не указываете никакой src / dest, а вместо этого определяете
sassDir
а такжеcssDir
опции.
Это означает, что вы не можете изменить путь туда, где ваш CSS
компилируется в, только определяет путь к корневой папке, в которую записываются все скомпилированные файлы.
Хотя это может раздражать, compass
просто предполагает, что поддержание компиляции в соответствии со структурой каталогов должно быть чем-то, что вы бы предпочли сделать - что-то несколько упрямое.
Вы все еще можете делать, что хотите, путем:
- Перестройка ваших файлов так, чтобы они были там
compass
ожидать, что они будут соответствовать вашему намерению. А именно сбросивpart1
каталог и размещениеpart1.sass
подsass
папка. - Компилирование вашего
CSS
файлы во временную папку, какtmp
, используя другую задачу, такую какcopy
( grunt-contrib-copy), чтобы скопировать всеCSS
файлы вcss
папку, а затем использовать задачу, какclean
( grunt-contrib-clean), чтобы очиститьtmp
файл. Вы должны загрузить задачи в таком порядке, чтобы они выполнялись в правильной последовательности.