在您的应用程序和源代码管理中存储 SASS 生成的 CSS 的最佳方法是啥?
Posted
技术标签:
【中文标题】在您的应用程序和源代码管理中存储 SASS 生成的 CSS 的最佳方法是啥?【英文标题】: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 资源时最好遵循的模式是什么?
【问题讨论】:
【参考方案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 子目录。
【讨论】:
以上是关于在您的应用程序和源代码管理中存储 SASS 生成的 CSS 的最佳方法是啥?的主要内容,如果未能解决你的问题,请参考以下文章
如何仅使用代码在您的 iOS 应用程序中显示 ViewController?