2012-06-15 18 views
3

我们使用Compass转为Sprite图像(将许多图像合并为一个文件)。如果我为images/common/dir创建一个Sprite,Compass将创建一个名为common-sff832da50b.png的文件。每次重新生成Sprite时,Compass都会生成一个新的后缀。如果我将这些Sprite图像保留在app/assets/images中,我会在public/assets中看到common-sff832da50b.png和common-sff832da50b-4a575c6c5d24895370db5ee7e7648d3a.png。由于Compass管理这个文件,我没有理由让Asset Pipeline“管理”它。我可以通过配置Compass将这些精灵直接编译成公共/资产来绕过资产管道。这是否有缺点?我们是否应该将Sprited图像保留在资产管道之外?

也有理由认为,我应该确保编译成Sprites的“源”图像不应该存储在app/assets/images中,因为Asset Pipeline也会“管理”它们。请记住,这些“源”图像不被使用。该应用在开发和生产中使用Sprites。据我所知,Asset Pipeline没有理由将原始文件和原始摘要复制到公共/资产中。我们只在Sprite中使用它。这听起来合理吗?有缺点吗?

假设:Rails 3.2。*

谢谢!

+0

更新:我们做了一个清单。 995个图像被“编译”成7个精灵。由于资产管道也指纹这些(和精灵文件),这意味着部署了2000个文件,只能被忽略。这包括复制的6.7G的1.8G。这是否会改变你的想法? –

回答

2

您可以将原始图像移动到管道外的任何文件夹。或不。除了预编译所需的时间以外,它并没有太大的区别,并且文件在永远不会引用的公用文件夹中浮动。

你必须把图像粘贴到某个地方,从Rails的观点来看,这似乎阻力最小。

关于指纹,您不需要指纹文件作为指南针(如您所说)指的是它创建的文件。

虽然直接写入+/public/assets +可能存在问题,具体取决于您部署项目的方式。

如果使用默认的Capistrano任务,assets文件夹是从+ shared/assets +中链接的,所以您需要在符号链接发生后编译sprite。

+0

我们得出了同样的结论。每次我看到这些文件被管理和复制时,我的OCD balks只能被忽略,但似乎没有更好的选择。 –

+1

我已训练自己只是不看文件夹。再说一遍自己 - 不要看着文件夹。 ;-) –

相关问题