所以我们有一个标准的 Compass CSS 项目,带有sass
和css
目录。作为一个场景,假设.scss
文件名为foo-all.scss
.
是否有可能通过命令行或config.rb
任何其他方式让 Compass 生成使用foo-all.css
“压缩”样式的文件和使用foo-all-debug.css
“扩展”样式的文件?
在我看来,Compass 似乎会拒绝生成与文件名称不同的 CSS 文件.scss
,并且您最多可以指定生成 CSS 文件的目录。
所以我们有一个标准的 Compass CSS 项目,带有sass
和css
目录。作为一个场景,假设.scss
文件名为foo-all.scss
.
是否有可能通过命令行或config.rb
任何其他方式让 Compass 生成使用foo-all.css
“压缩”样式的文件和使用foo-all-debug.css
“扩展”样式的文件?
在我看来,Compass 似乎会拒绝生成与文件名称不同的 CSS 文件.scss
,并且您最多可以指定生成 CSS 文件的目录。
在我的 MacOS X shell 上,我已经能够以这种方式从一个sass 文件生成两个不同的 css (production.css
和)development.css
original.scss
fc-iMac:sass fcalderan$ sass -t compact --watch original.scss:production.css &
sass -t expanded --watch original.scss:development.css
(我使用的是 compact 而不是压缩,但示例仍然有效)
这样做,每次我进行更改时,original.scss
我都会在同一个文件夹中获得两个更新的 css 文件(具有不同的输出样式)
当然,如果您有很多scss
文件要查看,您可以指定要查看的整个目录而不是单个文件(请参阅 SASS 文档以获取更多参考)
这似乎有点像 Compass 的缺陷。这真的是一件不寻常的事情吗?无论如何,这就是我的选择。假设文件夹结构是这样的:
Rakefile
/foo
/resources
/css
/debug
/sass
foo-all.scss
然后在 Rakefile 中,生成压缩和扩展版本,我这样做:
Dir.chdir "foo/resources/sass" do
# Compile both expanded and compressed variations
debugdir = File.join(File.dirname(__FILE__), 'foo/resources/css/debug')
sh "compass compile --output-style compressed --force"
sh "compass compile --output-style expanded --force --css-dir #{debugdir}"
mv "../css/debug/foo-all.css", "../css/foo-all-debug.css"
end
In essence, I generate the compressed CSS file in a separate /debug
directory, and then move it up to the /css
directory, to preserve URL paths in the CSS file. The debudir
shenanigans are necessary because Compass seems to require an absolute path when using the -css-dir
switch (on Windows, anyway).