Когда использовать stylesheet_pack_tag вместо stylesheet_link_tag с Rails 6
При создании нового проекта rails с помощью 9X_rails Rails 6 он создает application.html.erb 9X_ror с stylesheet_link_tag для загрузки CSS и 9X_ruby-on-rails-6 javascript_pack_tag для файлов javascript.
Теперь 9X_rails6 rails 6 также предоставляют stylesheet_pack_tag, поэтому 9X_rails мой вопрос: когда его использовать? И если 9X_ruby-on-rails-6 мы его используем, нужно ли нам добавлять 9X_rails6 все файлы CSS в папку app / javascript?
Как 9X_rails6 лучше всего загружать css, изображения с 9X_rails6 помощью rails 6 и webpacker?
Ответ #1
Ответ на вопрос: Когда использовать stylesheet_pack_tag вместо stylesheet_link_tag с Rails 6
Вы должны использовать stylesheet_pack_tag
, если вы импортируете 9X_rails6 какой-либо CSS в Webpack И если вы включили 9X_ror extract_css: true
для любой среды в config/webpacker.yml
.
Учитывая следующую структуру 9X_webpacker каталогов:
app/
javascript/
packs/
application.js
styles/
site.css
И следующий код в application.js
:
import '../styles/site.css'
Вы должны использовать 9X_rails6 <%= stylesheet_pack_tag 'application' %>
в своем представлении, т.е. имя таблицы 9X_rails стилей совпадает с именем «пакета».
На этом 9X_ror этапе я также рекомендую переименовать app/javascript
во 9X_rails6 что-то вроде app/frontend
. Итак, ключевые изменения 9X_ror в config/webpacker.yml
:
source_path: app/frontend
extract_css: true
app/
frontend/
packs/
application.js
styles/
site.css
- Я не знал, что нужно было включить `extract_css` ... средство изменения правил игры @rossta: praying_hands:< ...
Ответ #2
Ответ на вопрос: Когда использовать stylesheet_pack_tag вместо stylesheet_link_tag с Rails 6
Просто чтобы немного прояснить это. Это 9X_ruby-on-rails-6 основано на моем нынешнем понимании, которое, кажется, работает 9X_rails достаточно хорошо, но все же может быть 9X_ruby-on-rails не совсем точным.
CSS, обработанный конвейером 9X_ror ресурсов, получает css_link_tag
, а CSS, импортированный 9X_ruby-on-rails-6 через пакет javascript Webpacker, упоминается 9X_rails с помощью css_pack_tag
.
CSS конвейера активов находится 9X_ruby-on-rails-6 в app/assets/stylesheets
. Webpack css находится в app/javascripts/wherever_you_want
.
Таким образом, в 9X_webpacker webpack весь css, импортированный в пакет 9X_rails javascript, в конечном итоге извлекается 9X_rails6 в обслуживаемый файл, на который можно ссылаться 9X_ruby-on-rails-6 через то же имя, что и пакет js.
Итак, если 9X_ruby-on-rails в app/javascripts/application.js
у вас есть:
import 'app/javascripts/css/one.css'
import 'app/javascripts/css/two.css'
import 'app/javascripts/css/three.css'
На них будет ссылаться
css_pack_tag 'application'
Это 9X_ror выглядит так в моих журналах развертывания
Entrypoints:
application (430 KiB)
css/application-9d82d487.css
js/application-9f45d7ff735a7a203f28.js
Следует 9X_rails6 также отметить, что, как упоминалось выше, на 9X_ruby-on-rails это поведение влияет параметр extract_css
.
Предположительно 9X_rails6 по умолчанию это ложь в development
, а в production
- истина. Один 9X_rails большой GOTCHA с этим состоит в том, что, по 9X_rails крайней мере, в моем случае, css_pack_tag
на самом деле 9X_ruby-on-rails-6 не «требовался» при разработке в том смысле, что 9X_rails6 его удаление не имело никакого эффекта, потому 9X_rails что он не был извлечен локально. Он все 9X_webpacker еще «работал», потому что CSS был загружен 9X_webpacker в javascript и, похоже, каким-то образом 9X_webpacker применялся. Поэтому я удалил эти теги, думая, что 9X_rails они не нужны, прежде чем мое понимание улучшилось. К 9X_ruby-on-rails-6 сожалению, когда я через некоторое время 9X_ror развернул производство на heroku, ни один 9X_webpacker из моих css не работал, и мне потребовалось 9X_webpacker время, чтобы понять, почему, и вспомнить, что 9X_rails6 я удалил эти строки css_pack_tag
.
-
1
-
7
-
5
-
1
-
2
-
5
-
3
-
5
-
1
-
2
-
2
-
2
-
12
-
3
-
2
-
2
-
2
-
8
-
2
-
10
-
2
-
1
-
3
-
2
-
1
-
1
-
1
-
4
-
4
-
1
-
1
-
1
-
3
-
1
-
9
-
3
-
1
-
16
-
4
-
7
-
9
-
19
-
13
-
11
-
11
-
5
-
14
-
7
-
10
-
7