如何使用指南针在ember-cli中生成图像精灵? [英] How to generate image sprites in ember-cli using compass?

查看:284
本文介绍了如何使用指南针在ember-cli中生成图像精灵?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

更新 - 20140614:



无法获得此问题的任何答案或github,
我决定来用我自己的解决方案来解决问题。
我使用指南针的一些东西,
,但它的主要实用程序是在其生成图像精灵的能力。



因此,我写了



您可以< a href =http://blog.bguiz.com/post/88719320815/broccoli-sprite-released>了解有关此处的详情。



现在我不再有兴趣集成罗盘到我的ember-cli应用程序。
由于我的解决方案不直接回答问题(因为它不使用指南针),
我认为这个问题是未回答
由于这个问题可能会有利于社区的其他人希望这样做,
我将保持开放,并仍然尊重赏金!



更新 - 20140620:



赏金已过期。






原始问题



ember-cli 应用程式,
使用 broccoli指南针
如何配置以使生成的CSS正确地引用图像文件路径,包括生成的图像文件路径?



使用罗盘,以下SCSS:

  @importicon / *。png; 
@include all-icon-sprites;

…将生成图标文件夹中的所有图像的单个 .png 文件,以及用于显示每个图像的CSS。 / p>

我想能够通过ember-cli中的罗盘做同样的事情,
使用






我到目前为止尝试了什么:



#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',
}
};

只是为了尝试一下,我将图像文件复制到styles目录。
这次罗盘命令成功,但是
生成的CSS引用不存在的图像文件。
生成的图像似乎不会按预期(
或其他任何地方)复制到assets文件夹中:

  $ tree tmp / output 
tmp / output /
├──assets
│├──app.css
│├─app.js
│├──qunit.css
│├──qunit.js
│└──vendor.css
├──images
├──index.html
├──testem.js
└──测试
└──index.html

3个目录,8个文件








我希望能够编译(用于精灵生成)的SCSS:

 公用事业/精灵; 
$ icon-layout:smart;
$ icon-sprite-dimensions:true;
@importicon / *。png;
@ include all-icon-sprites;
@importcompass / css3 / images;





解决方案

困难的方式



添加到您的 brocfile

  var app = new EmberApp({
compassOptions:{
imagesDir:'public / assets'
}
});

,然后导入图标

  @importcompass / utilities / sprites; 
@importicons / *。png;

$ icons-sprite-dimensions:true;
@include all-icons-sprites;

并覆写路径

  .icons-sprite {
background-image:url('/ assets / icons-sea02d16a6c.png');
}



更优雅的方式



配置指南针以使用特定目录

  @importcompass / utilities / sprites 
@importcompass / configuration;

$ compass-options:(http_path:/,generated-images-path:public / assets,http-generated-images-path:/ assets,images-path:公共/资产);

@include compass-configuration($ compass-options);

@importicons / *。png;
$ icons-sprite-dimensions:true;
@include all-icons-sprites;

这不是一个完美的解决方案,虽然它的工作原理。配置不应存储在 .scss 文件中。不幸的是, brocfile 中的那些选项不会飞。


Update - 20140614:

After not getting any answers to this question, or on github, I decided to come up with my own solution to the problem. I was using compass for a number of things, but its main utility was in its ability to generated image sprites. Most other things could be accomplished using pure SCSS.

Thus, I wrote broccoli-sprite. This, used in conjunction with ember-cli's built in support for SCSS using broccoli-sass, was able to meet my needs.

You can read more about the process here.

Now I am thus no longer interested in integrating compass into my ember-cli app. As my solution does not directly answer the question (as it does not use compass), I consider this question to be unanswered. Since this question might yet benefit others in the community who wish to do so, I am leaving this open, and will still honour the bounty!

Update - 20140620:

Bounty has expired.


Original question:

In an ember-cli app, using broccoli-compass, how can it be configured such that the generated CSS references image file paths correctly, including generated image file paths?

Using compass, the following SCSS:

@import"icon/*.png";
@include all-icon-sprites;

… will generate a single .png file with all of the images in the icon folder, and CSS for displaying each.

I would like to be able to do the same via compass within ember-cli, which uses broccoli to build its asset pipeline.

  • Must work within ember-cli - that is, it must be built when ember serve or ember build is run
  • Must use compass to generate image sprites from a folder of images
  • The images generated should be copied to the assets folder
  • The generated CSS should point to images located in the assets folder, not to a temporary tree folder

What I have attempted so far:

#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',
  });
};

When I do this, the compass command fails because it cannot locate the image files within the tree.

#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',
  });
};

Just to try things out, I copy the image files into the styles directory. This time the compass command succeeds, but, the generated CSS references image files that do not exist. The generated images do not appear to get copied into the assets folder as expected ( or anywhere else for that matter):

$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


Details:

SCSS that I would like to be able to compile (for sprite generation):

@import"compass/utilities/sprites";
$icon-layout: smart;
$icon-sprite-dimensions: true;
@import"icon/*.png";
@include all-icon-sprites;
@import"compass/css3/images";


解决方案

The hard way

Add to your brocfile

var app = new EmberApp({
    compassOptions: {
        imagesDir: 'public/assets'
    }
});

and then import the icons

@import "compass/utilities/sprites";
@import "icons/*.png";

$icons-sprite-dimensions: true;
@include all-icons-sprites;

and overwrite the path

.icons-sprite {
    background-image: url('/assets/icons-sea02d16a6c.png');
}

The more elegant way

Configure compass to use particular directory

@import "compass/utilities/sprites";
@import "compass/configuration";

$compass-options: (http_path: "/", generated-images-path: "public/assets", http-generated-images-path: "/assets", images-path: "public/assets");

@include compass-configuration($compass-options);

@import "icons/*.png";
$icons-sprite-dimensions: true;
@include all-icons-sprites;

It is not a perfect solution although it works. Configuration should not be stored in .scss files. Unfortunately those options inside brocfile are not going to fly.

这篇关于如何使用指南针在ember-cli中生成图像精灵?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆