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[ @honeybadger-io/webpack @honeybadger-io/js 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
- #ensure_node_version ⇒ Object
- #force_node_to_use_es_modules ⇒ Object
- #honeybadger_setup ⇒ Object
- #remove_obsolete_javascript_dependencies ⇒ Object
- #replace_css_entrypoint_with_scss ⇒ Object
Instance Method Details
#add_npm_packages ⇒ Object
46 47 48 49 50 51 |
# File 'lib/generators/rolemodel/webpack/webpack_generator.rb', line 46 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 |
#ensure_node_version ⇒ Object
28 29 30 31 32 |
# File 'lib/generators/rolemodel/webpack/webpack_generator.rb', line 28 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
34 35 36 37 38 |
# File 'lib/generators/rolemodel/webpack/webpack_generator.rb', line 34 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 |
#honeybadger_setup ⇒ Object
53 54 55 56 57 58 59 60 |
# File 'lib/generators/rolemodel/webpack/webpack_generator.rb', line 53 def honeybadger_setup say 'Setting up Honeybadger for JS error reporting', :green copy_file 'app/javascript/initializers/honeybadger.js' append_to_file 'app/javascript/application.js', <<~JS import './initializers/honeybadger' JS end |
#remove_obsolete_javascript_dependencies ⇒ Object
40 41 42 43 44 |
# File 'lib/generators/rolemodel/webpack/webpack_generator.rb', line 40 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
62 63 64 65 66 67 |
# File 'lib/generators/rolemodel/webpack/webpack_generator.rb', line 62 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 |