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_node_version ⇒ Object
- #force_node_to_use_es_modules ⇒ Object
- #remove_obsolete_javascript_dependencies ⇒ Object
- #replace_css_entrypoint_with_scss ⇒ Object
-
#run_sentry_generator ⇒ Object
All Sentry concerns (including wiring its plugin into webpack.config.js) live in the Sentry generator; this option is a convenience for setting up both in one run.
Instance Method Details
#add_npm_packages ⇒ Object
53 54 55 56 57 58 |
# File 'lib/generators/rolemodel/webpack/webpack_generator.rb', line 53 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
67 68 69 70 71 72 |
# File 'lib/generators/rolemodel/webpack/webpack_generator.rb', line 67 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
35 36 37 38 39 |
# File 'lib/generators/rolemodel/webpack/webpack_generator.rb', line 35 def enable_corepack_and_yarn say 'Enabling Corepack and pinning the project to Yarn 4+', :green ensure_yarn end |
#ensure_node_version ⇒ Object
29 30 31 32 33 |
# File 'lib/generators/rolemodel/webpack/webpack_generator.rb', line 29 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
41 42 43 44 45 |
# File 'lib/generators/rolemodel/webpack/webpack_generator.rb', line 41 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
47 48 49 50 51 |
# File 'lib/generators/rolemodel/webpack/webpack_generator.rb', line 47 def remove_obsolete_javascript_dependencies say 'Removing webpack & webpack-cli from package.json dependencies', :green run 'yarn remove webpack webpack-cli' end |
#replace_css_entrypoint_with_scss ⇒ Object
60 61 62 63 64 65 |
# File 'lib/generators/rolemodel/webpack/webpack_generator.rb', line 60 def replace_css_entrypoint_with_scss say 'Replacing CSS entrypoint file with SCSS version', :green remove_file 'app/assets/stylesheets/application.css' copy_file 'app/assets/stylesheets/application.scss' end |
#run_sentry_generator ⇒ Object
All Sentry concerns (including wiring its plugin into webpack.config.js) live in the Sentry generator; this option is a convenience for setting up both in one run. Runs last so webpack.config.js exists before the Sentry generator injects into it.
78 79 80 81 82 |
# File 'lib/generators/rolemodel/webpack/webpack_generator.rb', line 78 def run_sentry_generator return unless .sentry? generate 'rolemodel:sentry' end |