更新 - 20140614:
由于没有得到关于这个问题的答案或者在github上的帮助,我决定自己解决这个问题。 我之前用compass进行了很多操作,但它最主要的用处是生成图片精灵。 其他大部分功能可以通过纯SCSS实现。
因此,我写了一个broccoli-sprite。 结合使用ember-cli内置的支持SCSS的broccoli-sass, 就可以满足我的需求。
你可以在这里阅读有关这个过程的更多信息。
现在,我不再有将compass集成到我的ember-cli应用程序中的兴趣。 因为我的解决方案并没有直接回答这个问题(因为它不使用compass), 所以我认为这个问题仍未得到解答。 由于这个问题可能会对其他希望这样做的社区成员有所帮助, 我将保持它的开放,并仍然会遵守悬赏规定!
更新 - 20140620:
悬赏已过期。
原问题:
在使用broccoli-compass的 ember-cli应用程序中, 如何配置它以使生成的CSS正确引用图像文件路径,包括生成的图像文件路径?
使用compass的话,可以使用以下SCSS:
@import"icon/*.png";
@include all-icon-sprites;
…会生成一个单独的.png
文件,其中包含icon
文件夹中的所有图像以及用于显示每个图像的CSS。
我希望能够通过ember-cli中的compass执行相同的操作, 它使用broccoli构建其资产管道。
- 必须在ember-cli中运行 - 也就是说,在运行ember serve或ember build时必须构建它
- 必须使用compass从图像文件夹生成图像精灵
- 生成的图像应该被复制到assets文件夹中
- 生成的CSS应该指向位于assets文件夹中的图像,而不是临时树文件夹中的图像
我到目前为止尝试过的:
#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
命令会失败,因为它无法在树中找到图像文件。
#2app.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";