lib/vite_ruby/cli/install.rb in vite_ruby-2.0.0.beta.6 vs lib/vite_ruby/cli/install.rb in vite_ruby-3.0.0.beta.1

- old
+ new

@@ -69,25 +69,21 @@ end # Internal: Creates the Vite and vite-plugin-ruby configuration files. def create_configuration_files copy_template 'config/vite.config.ts', to: root.join('vite.config.ts') + append root.join('Procfile.dev'), 'vite: bin/vite dev' setup_app_files ViteRuby.reload_with(config_path: config.config_path) end # Internal: Installs vite and vite-plugin-ruby at the project level. def install_js_dependencies package_json = root.join('package.json') write(package_json, '{}') unless package_json.exist? - - Dir.chdir(root) do - deps = js_dependencies.join(' ') - _, stderr, status = ViteRuby::IO.capture("npx --package @antfu/ni -- ni -D #{ deps }", stdin_data: "\n") - _, stderr, = ViteRuby::IO.capture("yarn add -D #{ deps }") unless status.success? - say("Could not install JS dependencies.\n", stderr) unless stderr.to_s.empty? - end + deps = js_dependencies.join(' ') + run_with_capture("#{ npm_install } -D #{ deps }", stdin_data: "\n") end # Internal: Adds compilation output dirs to git ignore. def install_gitignore return unless (gitignore_file = root.join('.gitignore')).exist? @@ -112,11 +108,21 @@ def say(*args) $stdout.puts(*args) end def run_with_capture(*args, **options) - _, stderr, status = ViteRuby::IO.capture(*args, **options) - say(err) unless status.success? || stderr.to_s.empty? + Dir.chdir(root) do + _, stderr, status = ViteRuby::IO.capture(*args, **options) + say(stderr) unless status.success? || stderr.to_s.empty? + end + end + + # Internal: Support all popular package managers. + def npm_install + return 'yarn add' if root.join('yarn.lock').exist? + return 'pnpm install' if root.join('pnpm-lock.yaml').exist? + + 'npm install' end # Internal: Avoid printing warning about missing vite.json, we will create one. def silent_warnings old_stderr = $stderr