如何在rails 3.1应用程序中使用Less?

时间:2011-09-06 13:19:55

标签: ruby-on-rails-3.1 sass less asset-pipeline

在rails 3.1资产管道中使用Less(与Sass / Scss结合使用)最简单(有一种简单方法吗?)是什么?

我想加载像foo.css.less这样的文件,就像我为bar.css.scss做的那样

我找到了一些对我不起作用的不太好的解决方案(没有尝试过很多): https://github.com/thisduck/ruby-less-js/issues/2

这个想法是以干净的方式使用Twitter Bootstrap。 提前致谢

5 个答案:

答案 0 :(得分:10)

如果您只想使用bootstrap,可以在GemFile中加入'less-rails'和'less-rails-bootstrap'宝石。

然后,您可以在.css.less文件中@import bootstrap:

@import "twitter/bootstrap"

或者,您可以单独包含每个组成文件(不包括您不想要的文件):

// Reset
@import "twitter/bootstrap/reset";

// Core variables and mixins
@import "twitter/bootstrap/variables";

@import "twitter/bootstrap/mixins";

// Grid system and page structure
@import "twitter/bootstrap/scaffolding";

// Styled patterns and elements
@import "twitter/bootstrap/type";
@import "twitter/bootstrap/forms";
@import "twitter/bootstrap/tables";
@import "twitter/bootstrap/patterns";

如果您因任何原因不想使用less-rails-bootstrap gem,或者您想要包含非引导无文件文件,则需要手动将.less路径添加到less- rails配置。请注意,如果您的文件名以.css.less结尾,则不需要这些额外工作,因为资产管道应该为您处理该编译(只要您包含'less-rails')。只有当您想在应用程序的.css.less文件中直接引用外部.less文件时,才需要执行此过程。

我用于bootstrap的设置是将* .less文件复制到vendor/assets/frameworks/twitter/bootstrap。保留vendor/assets/stylesheets/...中的文件会给我带来一些问题,可能是由于Rails魔法解析了我对未处理的.less文件的导入而不知道如何处理它们(这只是我的猜测,我不看完全进入它。

一旦你的项目中有.less文件,你需要告诉less-rails在哪里找到它们。通过将以下内容放入application.rb

来实现
YourApp::Application.configure do
  config.less.paths << File.join(Rails.root,'vendor','frameworks')
  # Should be set to true in production.
  config.less.compress = false
end

您可以使用以下方法将它们导入.css.less文件中:

@import "twitter/bootstrap/reset"
@import "twitter/bootstrap/variables"
...

答案 1 :(得分:1)

来自this blog post的人创建了Less Rails宝石。

在Rails 3.1项目中,它可以轻松减少。

答案 2 :(得分:0)

答案 3 :(得分:0)

答案 4 :(得分:-1)

只需将您的yourlessfile.less文件放入public/stylesheets,然后在您的视图中,将其包含在

stylesheet_link_tag "/stylesheets/yourlessfile.less", :rel => "stylesheet/less"

不要忘记在视图中包含less.js.