0

我仍然不太确定使用 Rails 资产管道的最佳实践。在 Rails 框架项目中,application.html.erb 包含以下代码:

<head>
  <title>My title</title>
  <%= stylesheet_link_tag "scaffolds" %>
  <%= stylesheet_link_tag "depot", media: "all"  %>
  <%= stylesheet_link_tag "application", media: "all" %>
  <%= javascript_include_tag "application" %>
  <%= csrf_meta_tags %>
</head>

现在正在开发中,所有的 js 和 css 都可以正常使用。但是在生产中,在预编译所有资产(js和css)之后,我只需要application.css和application.js,因为scaffolds.css和depot.css在application.css中是连接的。所以在生产中不再需要scaffolds.css 和depot.css。

我怎么能在开发和生产中拥有上述代码,让资产管道知道某些资产已在 application.css/js 中连接,然后在代码中删除那些资产链接标签?

如果这是不可能的,我应该如何避免加载冗余资源并保持产品部署的可管理性?(意味着不要在生产中手动删除链接标签)

谢谢。

4

1 回答 1

2

你不放

<%= stylesheet_link_tag "scaffolds" %>
<%= stylesheet_link_tag "depot", media: "all"  %>
<%= stylesheet_link_tag "application", media: "all" %>

在您的布局文件中。你只放

<%= stylesheet_link_tag "application", media: "all" %>

config/environment/development.rb你确保你有

config.assets.debug = true

config.assets.debug设置为时,true它将在开发模式下为文件的 Sprockets 指令<link ... /> 中所需的每个资产自动生成每个样式表的标签。application.css

默认情况下, inconfig/environment/production.rb config.assets.debugfalse导致资产被连接到一个application.css文件中(再次假设您的//= require行在 中是正确的application.css。这将导致 仅在生产中创建1 个链接标签。application.css

于 2012-07-25T03:27:16.580 回答