У меня есть существующее приложение rails
, в котором я работаю над отдельной ветвью для реализации yarn
для управления активами поставщиков. Мой стек приложений:
- рубин-2.4.0
- рельсы 5.1.4
- узел 9.4.0
- пряжа 1.3.2
После установки пряжи я запустил yarn init
, и он сгенерировал package.json в корне проекта. После добавления нескольких пакетов это выглядит так:
# package.json
{
"name": "my-project-name",
"version": "1.0.0",
"private": true,
"repository": "my-repo",
"author": "me",
"license": "MIT",
"dependencies": {
"bootstrap": "3",
"font-awesome": "^4.7.0",
"jquery": "^3.3.1",
"jquery-backstretch": "^2.1.16",
"jquery-ujs": "^1.2.2",
"waypoints": "^4.0.1"
}
}
Я создал в app/assets пару файлов для включения таблиц стилей и javascripts из node_modules
:
# app/assets/javascripts/node_modules.js
//= require jquery
//= require jquery-ujs
//= require bootstrap/dist/js/bootstrap.min.js
//= require waypoints
//= require jquery-backstretch
# app/assets/stylesheets/font_path_overwrite.scss
$fa-font-path: "font-awesome/fonts/";
# app/assets/stylesheets/node_modules.css.scss
/*
*= require bootstrap/dist/css/bootstrap.min.css
*= require font_path_overwrite
*= require font-awesome/scss/font-awesome
*/
Я также изменил:
# config/initializers/assets.rb
# ...
Rails.application.config.assets.paths << Rails.root.join('node_modules')
Rails.application.config.assets.precompile += %w(*.js *.scss)
Rails.application.config.assets.precompile += %w(*.png *.woff2 *.woff *.ttf *.eot *.jpg *.gif *.svg *.ico)
# Rakefile
# ...
Rake::Task['assets:precompile'].enhance [:js_deps_install]
task :js_deps_install do
sh 'yarn install'
end
В соответствии с SO-43170792 я добавил новый
heroku buildpacks:set heroku/ruby
heroku buildpacks:add --index 1 heroku/nodejs
В моей тестовой среде я развернул эти изменения и вдруг понял, что с прекомпиляцией моих ресурсов происходит что-то странное. node_modules/
папка: хотя с файлами js и css все работает нормально, у меня есть некоторые проблемы со шрифтами (особенно со шрифтами font-awesome).
При отладке в инспекторе сети файл assets/font-awesome/fonts/fontawesome-webfont.ttf?v=4.7.0
не найден, так как он был предварительно скомпилирован, а не просто скопирован в:
общественность/активы/шрифт-awesome/шрифты/fontawesome-webfont-[хэш].ttf
Я понимаю, почему я сталкиваюсь с этой ситуацией (которая очень похожа на этот оставшийся без ответа вопрос двухмесячной давности).
Я ищу чистое решение или умный обходной путь (например, создать промежуточное программное обеспечение для перенаправления простого запроса .ttf
в хешированную версию жалобы на рельсы и кэшировать ответ на x часов. У вас есть какие-либо предложения?
@font-face
в отдельном файле, как предлагается здесь github.com/ rails/rails/issues/31266#issuecomment-347652737, но это все еще выглядит тяжелым обходным путем - person mabe02   schedule 02.02.2018