diff --git a/vite_ruby/lib/tasks/vite.rake b/vite_ruby/lib/tasks/vite.rake
index f02337c8..54f7dcf7 100644
--- a/vite_ruby/lib/tasks/vite.rake
+++ b/vite_ruby/lib/tasks/vite.rake
@@ -43,10 +43,13 @@ namespace :vite do
   desc 'Ensure build dependencies like Vite are installed before bundling'
   task :install_dependencies do
     install_env_args = ENV['VITE_RUBY_SKIP_INSTALL_DEV_DEPENDENCIES'] == 'true' ? {} : { 'NODE_ENV' => 'development' }
-    cmd = ViteRuby.commands.legacy_npm_version? ? 'npx ci --yes' : 'npx --yes ci'
-    result = system(install_env_args, cmd)
-    # Fallback to `yarn` if `npx` is not available.
-    system(install_env_args, 'yarn install --frozen-lockfile') if result.nil?
+
+    install_cmd = case (pkg = ViteRuby.config.package_manager)
+    when "npm" then "npm ci"
+    else "#{pkg} install --frozen-lockfile"
+    end
+
+    system(install_env_args, install_cmd)
   end
 
   desc "Provide information on ViteRuby's environment"