shakacode / shakapacker

Use Webpack to manage app-like JavaScript modules in Rails
MIT License
400 stars 89 forks source link

Should bin/shakapacker work without Ruby? #465

Open justin808 opened 2 months ago

justin808 commented 2 months ago

Desired behavior:

If bin/shakapacker works without Ruby, then Docker Layer Caching (DLC) could fetch JS packages (yarn) and compile without the cache breaking due to Ruby changes. Currently, most will put the Ruby layers before the JS layers so that if the Ruby layers don't change, then the DLC will be used. But if any cache layers break due to Ruby changes, then bin/shakapacker has to run again.

One alternative is to cache the results of rake assets:precompile, as React on Rails Pro does.

Actual behavior:

Running bin/shakapacker requires all Ruby dependencies to be installed and be earlier layers of the DLC.

Setup environment:

N/A

G-Rath commented 2 months ago

I'm not sure it makes sense for Shakapacker to not use ruby for bin/shakapacker, because isn't that basically what jsbundling-rails is?

I think there are probably two areas worth looking into for Shakapacker:

  1. multistage builds: more specifically, figuring out what Ruby files are generally needed on average and encouraging those to be copied in a dedicated build, then have the output of that copied out into the main build
  2. caching the results of rake assets:precompile and/or webpack