如何使用Sass(或其他工具)合并.CSS文件?

时间:2011-04-16 17:30:22

标签: css sass google-closure google-closure-library

我可以使用Sass使用@import here编译多个.SCSS或.SASS输入文件到单个.CSS输出文件中。

如果我使用@import包含普通.CSS文件,则不会合并它们。输出.CSS文件仍包含@import指令。这是有道理的。

但有没有办法可以覆盖这种行为,也许是命令行切换到Sass编译器?换句话说,我是否可以告诉Sass尝试强制合并@import "foo.css";,就像它是.SCSS文件一样?

我正在使用带有许多.CSS文件的第三方库(Google Closure Library)。我在我的项目中只使用了其中一些。我宁愿避免使用手动解决方案,例如将所有这些文件重命名为.SCSS(虽然这似乎有效)或将其内容复制并粘贴到我的.SCSS文件中(也可以)。而且我不想将它们全部提供给客户端进口。我真的很喜欢Sass包含我使用'原样'的几个.CSS文件并生成单个输出样式表。可能?我还应该看看其他工具吗?

3 个答案:

答案 0 :(得分:11)

每个CSS文件也是一个有效的SCSS ..所以如果您更改文件,您需要“隐形”导入或合并到_filename.scss,然后使用@import "filename";从主scss文件中导入@import(扩展名可选)它应该编译成一个没有@import语句的大CSS

编辑添加:对不起只是在浏览器崩溃后看到你的编辑..并且看到它不是你想要的,我不知道另一种方式

答案 1 :(得分:3)

我在Sass找不到办法。

我的解决方法是直接从其网址导入第三方库。当然,这仅适用于通过URL提供的CSS库。它仍在导入多个文件,但至少我不必重命名文件,也不必管理供应商CSS库的修改后的副本。

示例:

// ORIGINAL: locally managed, modified copy (bad), no @import in output (good)
@import 'my_modified_copy/closure/goog/css/common.scss';

// WORKAROUND: vendor-managed (good): @import in output (bad but acceptable)
@import 'http://closure-library.googlecode.com/svn/trunk/closure/goog/css/tab.css';

在发布之前,我可能会添加一个脚本来从供应商处提取当前版本,并将所有.css文件重命名为.scss文件。但就目前而言,上述解决方法对于开发来说是可以接受的。

答案 2 :(得分:2)

这可以在服务器端完成,如果这是一个选项,可以省去一些麻烦。由于您只是将文件合并在一起,因为它只是CSS,因此信息中不应存在任何会损害您网站的冲突。此外,这种方式使您可以灵活地更新CSS,因为框架已得到改进。

Ruby不是我选择的语言,但仍然可以在这里完成所需的一切。有一个用Ruby编写的工具可以用CSS和JS文件为你做这个。看一下这篇博客文章,了解破解: http://cjohansen.no/en/ruby/juicer_a_css_and_javascript_packaging_tool

我希望这会有所帮助,如果您对此有任何其他要求,请告诉我。