@@ -200,44 +200,66 @@ def add_base_gems_to_gemfile
200200 end
201201
202202 def add_js_dependencies
203- major_minor_patch_only = /\A \d +\. \d +\. \d +\z /
204- if ReactOnRails ::VERSION . match? ( major_minor_patch_only )
205- package_json . manager . add ( [ "react-on-rails@#{ ReactOnRails ::VERSION } " ] )
206- else
207- # otherwise add latest
208- puts "Adding the latest react-on-rails NPM module. Double check this is correct in package.json"
209- package_json . manager . add ( [ "react-on-rails" ] )
210- end
203+ puts "=== DEBUG: add_js_dependencies method called ==="
204+
205+ begin
206+ major_minor_patch_only = /\A \d +\. \d +\. \d +\z /
207+ if ReactOnRails ::VERSION . match? ( major_minor_patch_only )
208+ puts "Adding react-on-rails@#{ ReactOnRails ::VERSION } "
209+ package_json . manager . add ( [ "react-on-rails@#{ ReactOnRails ::VERSION } " ] )
210+ else
211+ # otherwise add latest
212+ puts "Adding the latest react-on-rails NPM module. Double check this is correct in package.json"
213+ package_json . manager . add ( [ "react-on-rails" ] )
214+ end
211215
212- puts "Adding React dependencies"
213- package_json . manager . add ( [
214- "react" ,
215- "react-dom" ,
216- "@babel/preset-react" ,
217- "prop-types" ,
218- "babel-plugin-transform-react-remove-prop-types" ,
219- "babel-plugin-macros"
220- ] )
221-
222- puts "Adding CSS handlers"
223-
224- package_json . manager . add ( %w[
225- css-loader
226- css-minimizer-webpack-plugin
227- mini-css-extract-plugin
228- style-loader
229- ] )
230-
231- puts "Adding dev dependencies"
232- package_json . manager . add ( [
233- "@pmmmwh/react-refresh-webpack-plugin" ,
234- "react-refresh"
235- ] , type : :dev )
216+ puts "Adding React dependencies"
217+ package_json . manager . add ( [
218+ "react" ,
219+ "react-dom" ,
220+ "@babel/preset-react" ,
221+ "prop-types" ,
222+ "babel-plugin-transform-react-remove-prop-types" ,
223+ "babel-plugin-macros"
224+ ] )
225+
226+ puts "Adding CSS handlers"
227+ package_json . manager . add ( %w[
228+ css-loader
229+ css-minimizer-webpack-plugin
230+ mini-css-extract-plugin
231+ style-loader
232+ ] )
233+
234+ puts "Adding dev dependencies"
235+ package_json . manager . add ( [
236+ "@pmmmwh/react-refresh-webpack-plugin" ,
237+ "react-refresh"
238+ ] , type : :dev )
239+ puts "=== DEBUG: add_js_dependencies completed successfully ==="
240+ rescue => e
241+ puts "=== ERROR in add_js_dependencies: #{ e . message } ==="
242+ puts "=== ERROR backtrace: #{ e . backtrace . first ( 3 ) . join ( ', ' ) } ==="
243+ raise
244+ end
236245 end
237246
238247 def install_js_dependencies
239248 puts "Installing JavaScript dependencies"
240- run "yarn install"
249+
250+ # Detect which package manager to use
251+ if File . exist? ( File . join ( destination_root , "yarn.lock" ) )
252+ run "yarn install"
253+ elsif File . exist? ( File . join ( destination_root , "pnpm-lock.yaml" ) )
254+ run "pnpm install"
255+ elsif File . exist? ( File . join ( destination_root , "package-lock.json" ) )
256+ run "npm install"
257+ elsif File . exist? ( File . join ( destination_root , "package.json" ) )
258+ # Default to npm if no lock file exists but package.json does
259+ run "npm install"
260+ else
261+ puts "No package.json found, skipping JavaScript dependency installation"
262+ end
241263 rescue => e
242264 puts "Error installing JavaScript dependencies: #{ e . message } "
243265 raise
0 commit comments