# frozen_string_literal: true class ViteRuby::CLI::SSR < ViteRuby::CLI::Vite DEFAULT_ENV = CURRENT_ENV || 'production' JS_EXTENSIONS = %w[js mjs cjs] desc 'Run the resulting app from building in SSR mode.' executable_options def call(mode:, inspect: false, trace_deprecation: false) ViteRuby.env['VITE_RUBY_MODE'] = mode ssr_entrypoint = JS_EXTENSIONS .map { |ext| ViteRuby.config.ssr_output_dir.join("ssr.#{ ext }") } .find(&:exist?) unless ssr_entrypoint raise ArgumentError, "No ssr entrypoint found `#{ ViteRuby.config.ssr_output_dir.relative_path_from(ViteRuby.config.root) }/ssr.{#{ JS_EXTENSIONS.join(',') }}`. Have you run bin/vite build --ssr?" end cmd = [ 'node', ('--inspect-brk' if inspect), ('--trace-deprecation' if trace_deprecation), ssr_entrypoint, ] Kernel.exec(*cmd.compact.map(&:to_s)) end end