The Problem
My Rails app was running Vite. It worked: HMR in development, fingerprinted assets in production, Tailwind through PostCSS. But Vite is a JavaScript tool that happens to serve a Rails app. The vite_rails gem, vite.config.ts , config/vite.json , a separate dev server on port 3036, all to do what Rails can do natively.
I wanted to simplify toward a zero-Node future, where the app is pure Ruby in production. Not because Node is bad, but because every dependency is a liability, and this app doesnβt need a JavaScript build tool to serve server-rendered HTML with Turbo and Stimulus.
The question was: can I get there without rewriting everything at once?
The Journey: Sprockets β Vite β Propshaft + esbuild β Importmaps
This is actually the third asset pipeline this app has used.β¦