2013-06-26 41 views
2

我有几个模块包含诸如border-radius,$btnBgColor,up-arrow之类的东西。编译SCSS时默认导入通用模块

大多数其他模块的需要import他们在一个地方或另一个,所以我不知道如果我能在SCSS编译器级别import他们,这样我可以使用这些常见的实用工具,就好像它们是内置

我使用的SCSS实现是pyscss。 的Scss编译构造函数接受scss_files参数,我认为可以用来预先进口一些文件,所以我想是这样的:

compiler = scss.Scss(scss_files={path: source}) 
    compiler.compile("a { background: $btnBgColor; }") 

,没有工作。

回答

8

是的,这确实是可能的,事实上已经存在一个成熟的解决方案。

它被称为Compass

关于Compass是什么含糊不清,这是我非常规范的解决它的尝试。

指南针是一个名称下三个不同的东西:

  1. 一个standard用于创建可重用模块SASS,就像你想要的。这些模块被称为“指南针扩展”。指南针扩展基本上是以某种方式组织的SASS代码片段,分布为Ruby gems。它们还可以包含用于引入自定义SASS功能的Ruby代码。
  2. A compass命令行工具用于编译支持这些扩展的SASS。请注意,它只是原始SASS编译器的包装器,而不是独立的编译器。这里有它的主要特点:
    • compass允许导入扩展名只使用他们的名字和省略路径,例如, G。 @import singularity
    • 依赖于config.rb配置文件。 config.rb是一段Ruby代码。最好的事情是你可以用强大的Ruby来声明自定义的SASS函数!
    • 它还为您的SASS项目强加了特定的文件/文件夹结构,名为“Compass项目”。一个非常基本的Compass项目由一个配置文件,一个SASS代码的文件夹和一个生成CSS代码的文件夹组成。一些Compass扩展包含的模板允许您创建具有更高级结构的新Compass项目(我建议使用Toolkit扩展名)。
  3. 的罗盘extension同名(即@import compass在SASS),其含有大量的宝贵SASS混入和功能。

如果你要创建一个罗盘扩展您的需求,您可以使用this作为入门套件(请注意,在入门工具包的名称中的“模板”是指不同的东西比上面) 。

PS你正在使用pyScss,它声称有完全支持Compass。然而,我认为这是一个有点穷人的做法。我宁愿使用本地SASS和Compass软件。使用诸如RVM,RubyGems和Bundler等Ruby工具,即使您的项目不在Ruby中,也可以非常简单地执行和维护。您项目的复杂性会增加,但它使用本地工具的简单性而不是一些可疑的端口会让您付出代价。另见How to use Compass/Sass with Django

也可以看看GruntYeoman,它们被认为是改进您的开发工作流程的最现代的做法。

参考