Ruby 如何使用指南针生成精灵图像文件? 背景
我有一个图像目录,Ruby 如何使用指南针生成精灵图像文件? 背景,ruby,sass,compass-sass,css-sprites,Ruby,Sass,Compass Sass,Css Sprites,我有一个图像目录,app/assets/images/sprites/flags/*.png将被sprite。指南针、Sass和链轮一起工作,这样我就可以 @import "sprites/flags/*.png"; ... .flag.en { @include flags-sprite(en) } 在我的.scss文件中。这样,Compass在编译SCSS文件时会生成文件app/assets/images/sprites/flags-abc123.png 问题 我想通过Rake任务或s
app/assets/images/sprites/flags/*.png
将被sprite。指南针、Sass和链轮一起工作,这样我就可以
@import "sprites/flags/*.png";
...
.flag.en {
@include flags-sprite(en)
}
在我的.scss
文件中。这样,Compass在编译SCSS文件时会生成文件app/assets/images/sprites/flags-abc123.png
问题
我想通过Rake任务或shell命令预编译flags-abc123.png
文件,而不编译我的.scss
文件。有没有办法做到这一点
根本原因
编译应用程序中的所有.scss
文件是部署过程中很长的一部分。我们希望通过在一台机器上生成并分发部署来加快部署速度。不幸的是,其他机器会生成坏的缓存破坏URL,因为它们缺少已编译的sprite文件。如果我们可以预编译sprite文件,我们可以大大加快部署速度
我试过的
我试着运行bundle exec compass sprite app/assets/images/sprites/flags/*.png。它生成
app/assets/stylesheets/_flags.scs
,但不生成app/assets/images/sprites/flags-abc123.png
,我最后做了一个Rake任务:
class SpriteTask
include Rake::DSL
attr_reader :file_task
def initialize(glob)
@glob = glob
build_compass_sprite_map
define_task
end
private
attr_reader :glob, :map
def build_compass_sprite_map
uri = Sass::Script::String.new(glob)
context = Object.new
kwargs = {}
kwargs.extend Compass::SassExtensions::Functions::Sprites::VariableReader
@map = Compass::SassExtensions::Sprites::SpriteMap.from_uri uri, context, kwargs
@map.options = {}
end
def define_task
@file_task = file(map.filename => map.image_filenames) do |task|
map.generate
end
end
end
像这样使用它:
require 'sprite_task'
namespace :sprites do
task :generate do
SpriteTask.new('foo/*.png').file_task.invoke
SpriteTask.new('bar/*.png').file_task.invoke
end
end
能否添加compass项目的config.rb?