diff --git a/lib/generators/react_on_rails/base_generator.rb b/lib/generators/react_on_rails/base_generator.rb index 8d80fd037..0a51ddaaa 100644 --- a/lib/generators/react_on_rails/base_generator.rb +++ b/lib/generators/react_on_rails/base_generator.rb @@ -37,6 +37,26 @@ def copy_base_files base_files.each { |file| copy_file("#{base_path}#{file}", file) } end + def copy_webpack_config + puts "Adding Webpack config" + base_path = "base/base/" + base_files = %w[babel.config.js + config/webpack/clientWebpackConfig.js + config/webpack/commonWebpackConfig.js + config/webpack/development.js + config/webpack/production.js + config/webpack/serverWebpackConfig.js + config/webpack/webpackConfig.js] + base_files.each { |file| copy_file("#{base_path}#{file}", file) } + end + + def copy_webpacker_config + puts "Adding Webpacker v6 config" + base_path = "base/base/" + base_files = %w[config/webpacker.yml] + base_files.each { |file| copy_file("#{base_path}#{file}", file) } + end + def add_base_gems_to_gemfile gem "mini_racer", platforms: :ruby run "bundle" @@ -51,6 +71,19 @@ def add_yarn_dependencies puts "Adding the lastest react-on-rails NPM module. Double check this is correct in package.json" run "yarn add react-on-rails --exact" end + + puts "Adding React dependencies" + run "yarn add react react-dom @babel/preset-react prop-types babel-plugin-macros \ + babel-plugin-transform-react-remove-prop-types" + + puts "Adding TypeScript dependencies" + run "yarn add typescript @babel/preset-typescript @types/react @types/react-dom" + + puts "Adding CSS handlers" + run "yarn add css-loader css-minimizer-webpack-plugin mini-css-extract-plugin style-loader" + + puts "Adding dev dependencies" + run "yarn add -D @pmmmwh/react-refresh-webpack-plugin fork-ts-checker-webpack-plugin react-refresh" end def append_to_spec_rails_helper diff --git a/lib/generators/react_on_rails/react_no_redux_generator.rb b/lib/generators/react_on_rails/react_no_redux_generator.rb index afc2380aa..aeb82dbdc 100644 --- a/lib/generators/react_on_rails/react_no_redux_generator.rb +++ b/lib/generators/react_on_rails/react_no_redux_generator.rb @@ -12,7 +12,10 @@ class ReactNoReduxGenerator < Rails::Generators::Base def copy_base_files base_js_path = "base/base" - base_files = %w[app/javascript/bundles/HelloWorld/components/HelloWorld.jsx] + base_files = %w[app/javascript/packs/server-bundle.js + app/javascript/bundles/HelloWorld/components/HelloWorld.jsx + app/javascript/bundles/HelloWorld/components/HelloWorldServer.js + app/javascript/bundles/HelloWorld/components/HelloWorld.module.css] base_files.each { |file| copy_file("#{base_js_path}/#{file}", file) } end diff --git a/lib/generators/react_on_rails/templates/base/base/app/javascript/bundles/HelloWorld/components/HelloWorld.jsx b/lib/generators/react_on_rails/templates/base/base/app/javascript/bundles/HelloWorld/components/HelloWorld.jsx index f7e0487e3..bc60ffebe 100644 --- a/lib/generators/react_on_rails/templates/base/base/app/javascript/bundles/HelloWorld/components/HelloWorld.jsx +++ b/lib/generators/react_on_rails/templates/base/base/app/javascript/bundles/HelloWorld/components/HelloWorld.jsx @@ -1,5 +1,6 @@ import PropTypes from 'prop-types'; import React, { useState } from 'react'; +import style from './HelloWorld.module.css'; const HelloWorld = (props) => { const [name, setName] = useState(props.name); @@ -9,7 +10,7 @@ const HelloWorld = (props) => {