I am trying to upgrade my app to Rails 7 and decided to upgrade shakapacker (aka webpacker 6).
I like to have images in app/javascript/images organized into subdirectories but for some reason this whole structure gets flattened by skakapacker/webpack.
So <%= image_pack_tag "subdir/image.png" %> raises an error but <%= image_pack_tag "image.png" %> works.
My only clue so far is the doc for webpack-asset-manifest which says: will generate a JSON file that matches the original filename with the hashed version - emphasis on the filename. This might be a change since webpack days?
Also the manifest.json looks different now with shakapacker. Webpcker used to be:
"media/images/favicons/a/favicon.ico": "/packs/media/images/favicons/a/favicon-bdfbf38fd01fae2abb3e1ac7de9c3a12.ico",
now with shakapacker:
"static/image.png": "/packs-test/static/image-bd51daf42131d4298622.png"
You can find the minimal rails app replicating this on my github.
CodePudding user response:
In your packs/application.js you should have this
const images = require.context('../images', true)
true is including all subdirectories
check out this https://webpack.js.org/guides/dependency-management/
CodePudding user response:
This was indeed a bug in webpacker6/shakapacker.
