Class: Rolemodel::WebpackGenerator
- Inherits:
-
GeneratorBase
- Object
- Rails::Generators::Base
- GeneratorBase
- Rolemodel::WebpackGenerator
- Defined in:
- lib/generators/rolemodel/webpack/webpack_generator.rb
Constant Summary collapse
- DEV_DEPS =
%w[ esbuild esbuild-loader webpack webpack-cli ]
- POSTCSS_PKGS =
%w[ @csstools/postcss-sass postcss postcss-loader postcss-preset-env postcss-scss ]
- WEBPACK_CSS_PKGS =
%w[ css-loader css-minimizer-webpack-plugin mini-css-extract-plugin ]
Instance Method Summary collapse
- #add_npm_packages ⇒ Object
- #add_webpack_config ⇒ Object
- #enable_corepack_and_yarn ⇒ Object
- #ensure_jsbundling ⇒ Object
- #ensure_no_importmap ⇒ Object
- #ensure_node_version ⇒ Object
- #force_node_to_use_es_modules ⇒ Object
- #remove_obsolete_javascript_dependencies ⇒ Object
Instance Method Details
#add_npm_packages ⇒ Object
62 63 64 65 66 67 |
# File 'lib/generators/rolemodel/webpack/webpack_generator.rb', line 62 def add_npm_packages say 'Adding new dev dependencies to package.json', :green dependencies = DEV_DEPS + POSTCSS_PKGS + WEBPACK_CSS_PKGS run "yarn add --dev #{dependencies.join(' ')}" end |
#add_webpack_config ⇒ Object
69 70 71 72 73 74 |
# File 'lib/generators/rolemodel/webpack/webpack_generator.rb', line 69 def add_webpack_config say 'Copying PostCSS & Webpack config files', :green copy_file 'postcss.config.cjs', force: true copy_file 'webpack.config.js', force: true end |
#enable_corepack_and_yarn ⇒ Object
44 45 46 47 48 |
# File 'lib/generators/rolemodel/webpack/webpack_generator.rb', line 44 def enable_corepack_and_yarn say 'Enabling Corepack and pinning the project to Yarn 4+', :green ensure_yarn end |
#ensure_jsbundling ⇒ Object
33 34 35 36 |
# File 'lib/generators/rolemodel/webpack/webpack_generator.rb', line 33 def ensure_jsbundling bundle_command 'add jsbundling-rails' run_bundle end |
#ensure_no_importmap ⇒ Object
26 27 28 29 30 31 |
# File 'lib/generators/rolemodel/webpack/webpack_generator.rb', line 26 def ensure_no_importmap return unless Rails.root.join(destination_root, 'config/importmap.rb').exist? remove_file 'config/importmap.rb' bundle_command 'remove importmap-rails' end |
#ensure_node_version ⇒ Object
38 39 40 41 42 |
# File 'lib/generators/rolemodel/webpack/webpack_generator.rb', line 38 def ensure_node_version say "Establish development environment Node version of #{set_color(NODE_VERSION, :yellow)}", :green create_file '.node-version', NODE_VERSION, force: true end |
#force_node_to_use_es_modules ⇒ Object
50 51 52 53 54 |
# File 'lib/generators/rolemodel/webpack/webpack_generator.rb', line 50 def force_node_to_use_es_modules say 'Configuring project to use ES Modules instead of CommonJS', :green run 'npm pkg set type=module' end |
#remove_obsolete_javascript_dependencies ⇒ Object
56 57 58 59 60 |
# File 'lib/generators/rolemodel/webpack/webpack_generator.rb', line 56 def remove_obsolete_javascript_dependencies say 'Removing webpack & webpack-cli from package.json dependencies', :green run 'yarn remove webpack webpack-cli' end |