Использование конвейера ресурсов с группами файлов - PullRequest
4 голосов
/ 22 ноября 2011

В документации Rails для конвейера ресурсов говорится:

Поведение по умолчанию в Rails 3.1 и более поздних версиях заключается в объединении всех файлов в один главный файл каждый для JS и CSS.Однако при необходимости вы можете разделить файлы или группы файлов (см. Ниже)

Как именно вы разделяете файлы на группы, как указано?Например, если у меня есть приложение, в котором также есть область администратора, я бы хотел создать три скомпилированных файла:

shared.css (это используется как для внешнего, так и для внутреннего интерфейса)
application.css (только интерфейс)
admin.css (только интерфейс)

По умолчанию все мои файлы объединяются в application.css.

Ответы [ 2 ]

5 голосов
/ 22 ноября 2011

Вам нужно будет создать манифест для каждой области.Например:

admin.css:

/*
 *= require shared/nomalize
 *= require shared/960.css
 *= require admin/base
 *= require admin/tables
 */

shared.css:

/*
 *= require shared/nomalize
 *= require shared/960.css
 *= require public/base
 *= require public/branding
 */

Вы свободнысделать папки для хранения общих, общедоступных и административных CSS и требовать их по мере необходимости.Вам нужно будет удалить директивы require_tree из любых манифестов

Ссылка на них в ваших макетах:

<%= stylesheet_link_tag "application" %>
<%= stylesheet_link_tag "admin" %>

и добавление дополнительных манифестов в массив прекомпиляции:

config.assets.precompile += ['admin.js', 'admin.css']
3 голосов
/ 22 ноября 2011

По-видимому, мое понимание чтения совершенно отсутствует (tl; dr). Кажется, что когда вы используете

stylesheet_link_tag 'application'

Я смотрю в app / assets / stylesheets / application (css | sass) для файла манифеста, который определяет, какие листы включать.

Так что я могу просто использовать

stylesheet_link_tag 'admin'

В моем бэк-энде искать этот манифест. Итак, вот как выглядит моя структура активов:

/app
  /assets
    /stylesheets
      admin.css
      application.css
      /admin
        screen.css
      /application
        screen.css
      /shared
        layout.sass
        reset.css
        typography.sass

admin.css и application.css - мои манифесты, и они выглядят следующим образом:

/** admin.css
 *= require_self
 *= require shared/reset
 *= require shared/layout
 *= require shared/typography
 *= require admin/screen
*/

/** application.css
 *= require_self
 *= require shared/reset
 *= require shared/layout
 *= require shared/typography
 *= require application/screen
*/

Вы можете видеть, что каждый из них просто ссылается на общие листы, а затем требует специфический для контекста лист.

...