Обновление - 20140614:
После получения ответов на этот вопрос или на github, Я решил придумать свое решение проблемы. Я использовал компас для нескольких вещей, но его основная полезность заключалась в его способности генерировать спрайты изображений. Большинство других вещей можно было бы выполнить с помощью чистого SCSS.
Таким образом, я написал broccoli-sprite. Это, используется совместно с ember-cli, встроенным в поддержку SCSS используя broccoli-sass, смог удовлетворить мои потребности.
Вы можете узнать подробнее об этом здесь.
Теперь я больше не заинтересован в интеграции компаса в мое приложение ember-cli. Поскольку мое решение напрямую не отвечает на вопрос (поскольку он не использует компас), Я считаю этот вопрос неотвеченным. Поскольку этот вопрос может принести пользу другим людям, желающим это сделать, Я оставляю это открытым и по-прежнему буду отмечать щедрость!
Обновление - 20140620:
Bounty истек.
Оригинальный вопрос:
В приложении ember-cli, используя broccoli-compass, как он может быть сконфигурирован так, чтобы сгенерированные CSS-ссылки на пути к файлам изображений корректно, включая сгенерированные пути файлов изображений?
Используя компас, следующий SCSS:
@import"icon/*.png";
@include all-icon-sprites;
& hellip; будет генерировать один файл .png
со всеми изображениями в папке icon
и CSS для отображения каждого из них.
Я хотел бы иметь возможность делать то же самое с помощью компаса в ember-cli, который использует broccoli для создания своего конвейера активов.
- Должен работать в ember-cli - то есть он должен быть создан при запуске ember или создании ember.
- Должен использовать компас для создания спрайтов изображений из папки изображений
- Сгенерированные изображения должны быть скопированы в папку с ресурсами
- Сгенерированный CSS должен указывать на изображения, расположенные в папке с ресурсами, а не на временную папку дерева
Что я сделал до сих пор:
# 1
app.styles = function() {
var tree = this.appAndDependencies();
return compileCompass(tree, {
outputStyle: 'expanded',
relativeAssets: false,
sassDir: this.name+'/styles',
imagesDir: 'public/images',
// imagesDir: this.name+'/styles/images',
cssDir: '/assets',
});
};
Когда я это делаю, команда compass
терпит неудачу, потому что она не может найти файлы изображений в дереве.
# 2
app.styles = function() {
var tree = this.appAndDependencies();
return compileCompass(tree, {
outputStyle: 'expanded',
relativeAssets: false,
sassDir: this.name+'/styles',
// imagesDir: 'public/images',
imagesDir: this.name+'/styles/images',
cssDir: '/assets',
});
};
Просто, чтобы попробовать, я копирую файлы изображений в каталог стилей. На этот раз команда компаса преуспевает, но, генерируемые CSS файлы изображений ссылок, которые не существуют. Сгенерированные изображения, похоже, не копируются в папку с ресурсами, как ожидалось ( или где-нибудь еще в этом отношении):
$tree tmp/output
tmp/output/
├── assets
│ ├── app.css
│ ├── app.js
│ ├── qunit.css
│ ├── qunit.js
│ └── vendor.css
├── images
├── index.html
├── testem.js
└── tests
└── index.html
3 directories, 8 files
Подробнее:
SCSS, который я хотел бы скомпилировать (для генерации спрайтов):
@import"compass/utilities/sprites";
$icon-layout: smart;
$icon-sprite-dimensions: true;
@import"icon/*.png";
@include all-icon-sprites;
@import"compass/css3/images";