{"id":21851,"library":"rails-vite-plugin","title":"Rails Vite Plugin","description":"A Vite plugin for integrating Vite into Ruby on Rails applications, currently at stable version 0.2.4. It provides seamless asset pipeline integration with both Propshaft and Sprockets, supports SSR, glob patterns for entry points, and works with jsbundling-rails. Regular releases (approximately monthly) with active maintenance. Key differentiators: lightweight, no gem required in jsbundling mode, automatic entry point discovery, subresource integrity, and test mode isolation. Requires Vite >= 5.0.0 and Node >= 18.","status":"active","version":"0.2.4","language":"javascript","source_language":"en","source_url":"https://github.com/skryukov/rails_vite","tags":["javascript","vite","rails","jsbundling","jsbundling-rails","vite-plugin","typescript"],"install":[{"cmd":"npm install rails-vite-plugin","lang":"bash","label":"npm"},{"cmd":"yarn add rails-vite-plugin","lang":"bash","label":"yarn"},{"cmd":"pnpm add rails-vite-plugin","lang":"bash","label":"pnpm"}],"dependencies":[{"reason":"Peer dependency: requires Vite >= 5.0.0 to function as a plugin.","package":"vite","optional":false}],"imports":[{"note":"ESM-only package; CommonJS require is not supported.","wrong":"const rails = require('rails-vite-plugin')","symbol":"default","correct":"import rails from 'rails-vite-plugin'"},{"note":"Type-only import; if used at runtime, remove 'type'.","wrong":"import { RailsPluginOptions } from 'rails-vite-plugin'","symbol":"RailsPluginOptions","correct":"import type { RailsPluginOptions } from 'rails-vite-plugin'"},{"note":"Both default import and named default work.","wrong":"import rails from 'rails-vite-plugin'; // This is correct, but named default is also possible.","symbol":"default (named alias)","correct":"import { default as rails } from 'rails-vite-plugin'"}],"quickstart":{"code":"// vite.config.ts\nimport { defineConfig } from 'vite';\nimport rails from 'rails-vite-plugin';\n\nexport default defineConfig({\n  plugins: [\n    rails({\n      version: '0.2.4',\n      sourceDir: 'app/javascript',\n      entrypoints: 'app/javascript/entrypoints',\n      publicDir: 'public/vite',\n      envDir: undefined,\n      // Optional: for SSR\n      ssrBuildDirectory: 'public/vite-ssr',\n    }),\n  ],\n});","lang":"typescript","description":"Configures Vite with the Rails plugin, specifying source directory and entry points."},"warnings":[{"fix":"Use ES module import syntax instead of require().","message":"ESM-only package: CommonJS require() will fail.","severity":"gotcha","affected_versions":">=0.1.0"},{"fix":"Check the jsbundling mode documentation; if using jsbundling-rails, ensure you follow the correct setup.","message":"In v0.2.0, jsbundling mode was introduced, which changes default behavior and may require configuration updates.","severity":"breaking","affected_versions":">=0.2.0"},{"fix":"Migrate to jsbundling mode (no gem) or use the gem with updated config.","message":"The old `vite_rails` gem integration is deprecated; use the standalone plugin or jsbundling mode.","severity":"deprecated","affected_versions":">=0.2.0"},{"fix":"Upgrade Node.js to version 18 or higher.","message":"Node >= 18 is required; older versions are not supported.","severity":"gotcha","affected_versions":">=0.1.0"},{"fix":"Upgrade to v0.2.1 or later.","message":"In development mode, asset URLs may incorrectly point to Rails server instead of Vite dev server (fixed in v0.2.1).","severity":"gotcha","affected_versions":"<0.2.1"}],"env_vars":null,"last_verified":"2026-04-27T00:00:00.000Z","next_check":"2026-07-26T00:00:00.000Z","problems":[{"fix":"Change to import statement: import rails from 'rails-vite-plugin'. Ensure your project uses ESM (type: module in package.json) or use dynamic import() if needed.","cause":"Using CommonJS require() on an ESM-only package.","error":"Error: ERR_REQUIRE_ESM - require() of ES Module /path/to/rails-vite-plugin/index.js not supported."},{"fix":"Use a relative path like './entrypoints/application.js' or ensure sourceDir and entrypoints config are correct.","cause":"Entry point path is not properly resolved; plugin expects relative paths from sourceDir.","error":"[vite] RollupError: Could not resolve entry point 'app/javascript/entrypoints/application.js' - entry paths must be relative or absolute."},{"fix":"Ensure you do import rails from 'rails-vite-plugin' and then rails({...}) in plugins array.","cause":"Using rails() as a function but it's not imported correctly (e.g., default import not used).","error":"TypeError: Cannot destructure property 'version' of 'rails is not a function'"},{"fix":"Install vite: npm install vite --save-dev or yarn add vite --dev.","cause":"Missing peer dependency 'vite'.","error":"Module not found: Error: Can't resolve 'vite' in ... when using rails-vite-plugin"}],"ecosystem":"npm","meta_description":null,"install_score":null,"install_tag":null,"quickstart_score":null,"quickstart_tag":null}