У меня было старое приложение Rails 5 (с начальной загрузкой через webpacker), и сегодня я провел целый день, перенося его на Rails 7. Я был очень рад, что наконец-то смог избавиться от webpacker изначально, но меня смутило такое количество вариантов. там, и я, наконец, получаю работу со следующим сообщением.
https://eagerworks.com/blog/import-maps-in-rails-7
Однако я нашел следующий файл в своей папке.
app/assets/config/manifest.js
он содержит следующий код
//= link_directory ../javascripts .js
//= link_directory ../stylesheets .css
//= link_tree ../../../vendor/javascript .js
Я считаю, что он был сгенерирован в результате моих предыдущих испытаний (я думаю, путем разделения). Могу ли я безопасно удалить это?
Неее, не могу удалить.
Для importmaps это должно выглядеть так:
//= link_tree ../images
//= link_directory ../stylesheets .css
//= link_tree ../../javascript .js
//= link_tree ../../../vendor/javascript .js
Предполагая, что ваш javascript находится в каталоге app/javascript
. Если он в app/assets/javascripts
, то у вас должно быть это:
//= link_directory ../javascripts .js
Дважды проверьте и убедитесь, что вы получаете обработанные URL-адреса:
$ bin/importmap json
{
"imports": {
"application": "/assets/application-37f365cbecf1fa2810a8303f4b6571676fa1f9c56c248528bc14ddb857531b95.js",
"@hotwired/turbo-rails": "/assets/turbo.min-f309baafa3ae5ad6ccee3e7362118b87678d792db8e8ab466c4fa284dd3a4700.js",
"@hotwired/stimulus": "/assets/stimulus.min-d03cf1dff41d6c5698ec2c5d6a501615a7a33754dbeef8d1edd31c928d17c652.js",
"@hotwired/stimulus-loading": "/assets/stimulus-loading-1fc59770fb1654500044afd3f5f6d7d00800e5be36746d55b94a2963a7a228aa.js",
"controllers/application": "/assets/controllers/application-368d98631bccbf2349e0d4f8269afb3fe9625118341966de054759d96ea86c7e.js",
"controllers/hello_controller": "/assets/controllers/hello_controller-549135e8e7c683a538c3d6d517339ba470fcfb79d62f738a0a089ba41851a554.js",
"controllers": "/assets/controllers/index-2db729dddcc5b979110e98de4b6720f83f91a123172e87281d5a58410fc43806.js"
}
}
sprockets
использует этот файл для предварительной компиляции файлов в рабочей среде, и он сломается, если вы его удалите.
Спасибо за информацию. Я обнаружил, что manifest.js используется Sprocket (особенно с версии 4). Более подробная информация найдена: github.com/rails/sprockets/blob/main/UPGRADING.md#manifestjs Я был смущен, потому что у меня все еще есть файлы от предыдущего Sprocket (app/assets/javascripts/application.js и app/ активы/таблицы стилей/application.scss).