【问题标题】:What is the best method for storing SASS generated CSS in your application and source control?在您的应用程序和源代码管理中存储 SASS 生成的 CSS 的最佳方法是什么?
【发布时间】:2010-09-10 07:18:20
【问题描述】:

如果您在 Rails 应用程序中使用 HAML 和 SASS,那么您在 public/stylesheet/*.sass 中定义的任何模板都将编译为 *.css 样式表。从您的代码中,您可以使用 stylesheet_link_tag 按名称提取资产,而无需担心扩展。

许多人不喜欢在版本控制中存储生成的代码或编译的代码,而且 public/ 目录不应该包含您不发送到浏览器的元素也是有道理的。

在您的 Rails 项目中布置 SASS 资源时最好遵循的模式是什么?

【问题讨论】:

    标签: ruby-on-rails haml sass


    【解决方案1】:

    compass 框架建议将 sass 样式表放在 app/stylesheets 下,将编译后的 css 放在 public/stylesheets/compiled 下。

    您可以通过将以下代码添加到您的 environment.rb 来进行配置:

    Sass::Plugin.options[:template_location] = {
      "#{RAILS_ROOT}/app/stylesheets" => "#{RAILS_ROOT}/public/stylesheets/compiled"
    }
    

    如果您使用 compass 框架,它会在您安装时为您设置此配置。

    【讨论】:

      【解决方案2】:

      我总是对“public/stylesheets/sass/*.sass”中的所有样式表进行版本控制,并为已编译的样式表设置一个排除过滤器:

      /public/stylesheets/*.css
      

      【讨论】:

        【解决方案3】:

        老实说,我喜欢在版本控制中使用已编译的 SASS 样式表。它们很小,仅在您的 .sass 文件更改时才会更改,并且将它们与您的应用程序的其余部分一起部署意味着 SASS 编译器永远不需要在生产中触发。

        另一个优点(尽管很小)是,如果您不使用页面缓存,则您的 rails 进程不需要对您的 public_html 目录具有写入权限。因此,对您的服务器的利用可能是邪恶的。

        【讨论】:

          【解决方案4】:

          有点相关,但在 capistrano 部署期间重新生成 CSS 是个好主意。这个回调钩子就是这样做的:

          after "deploy:update_code" do
            rails_env = fetch(:rails_env, "production")
            run "#{release_path}/script/runner -e #{rails_env} 'Sass::Plugin.update_stylesheets'"
          end
          

          更新:现代版本的 Haml/Sass 不再需要更新。

          【讨论】:

            【解决方案5】:

            如果我可以管理它,当我为项目选择 HAML/SASS 时,我喜欢将我的所有样式存储在 SASS 模板中,并且我将删除 application.css 和 scaffold.css。然后我将SASS放在public/stylesheets/sass中,并将/public/stylesheets/*.css添加到.gitignore中。

            如果我必须同时使用基于 SASS 和 CSS 的资产,那就有点复杂了。处理此问题的最简单方法是在样式表目录中为生成的 CSS 提供一个输出子目录,然后在 .gitignore 中排除该子目录。然后,在您的视图中,您必须知道您正在使用哪种样式类型(SASS 或 CSS),因为您必须选择 public/stylesheets/foo 样式表或 public/stylesheets/sass-out/foo 样式表。

            如果您必须走第二条路线,请构建一个帮助器来抽象出 sass-out 子目录。

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2010-09-20
              • 2017-11-24
              相关资源
              最近更新 更多