Как заглушки активов в Sprockets 4, не ломая все? - PullRequest
0 голосов
/ 18 февраля 2020

У меня есть несколько разных таблиц стилей, которые должны быть взаимоисключающими, давайте назовем их светлыми. css .s css и темными. css .s css. До сих пор мой конвейер активов состоял из:

Создание файлов в папке app / assets / stylesheets:

application.css
light.css.scss
dark.css.scss

Включение их в мои initializers / assets.rb:

Rails.application.config.assets.precompile += %w( light.css.scss )
Rails.application.config.assets.precompile += %w( dark.css.scss )

Удаляем их в моем приложении. css file:

/*
 *= require_self
 *= require_tree .
 *= stub dark.css.scss
 *= stub light.css.scss
 */

И затем вручную запрашиваем их при необходимости:

<% if subdomain == "light" %>
  <%= stylesheet_link_tag "light" %>
<% else %>
  <%= stylesheet_link_tag "dark" %>
<% end %>

Это сработало отлично, но потом Я обновил свой драгоценный камень Sprockets до 4.0, и все сломалось. Оказывается, мне нужен файл assets / config / manifest. js, но буквально единственная информация, которую я могу найти в этом файле, это this , где парень говорит, что не может найти в нем никакой информации либо что его приложение работало нормально с пустым. С пустым файлом я получаю такие ошибки:

#<ActionView::Template::Error: Asset `favicons/dark.png` was not declared to be precompiled in production.

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

#manifest.js
//= link_tree ../images
//= link_directory ../javascripts .js
//= link_directory ../stylesheets .css

, я получаю это:

#<ActionView::Template::Error: couldn't find file 'dark.css.scss' with type 'text/css'

И я получаю всевозможные подобные ошибки в файлах, независимо от того, что я делаю. Я не получаю ошибок при удалении файлов таблиц стилей из своего приложения. css, но тогда все стили смешиваются вместе, и это кошмар дизайна. Я понимаю, что приложение. css «скрывает» файлы и затем манифест. js сбивается с толку, когда не может их найти, но я не знаю, что с этим делать. Я попытался удалить их из приложения. css и вставить их в манифест. js, но это тоже не сработало. Что действительно странно, так это то, что я не могу найти никакой информации о том, как должен работать файл манифеста. js.

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

1 Ответ

0 голосов
/ 19 февраля 2020

Ответ на самом деле оказался довольно простым, проблема была require_tree . в моем приложении. css. Я просто удалил все в нем и добавил мои таблицы стилей в манифест по очереди. js, используя. css not. css .s css, вот так:

//= link dark.css
//= link light.css

и затем включил файлы по мере необходимости, как и раньше. Теперь они оба предварительно скомпилированы, но не мешают друг другу.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...