Class: Rails::CssUnused::Configuration
- Inherits:
-
Object
- Object
- Rails::CssUnused::Configuration
- Defined in:
- lib/rails/css_unused/configuration.rb
Constant Summary collapse
- VIEW_EXTENSIONS =
File extensions treated as view templates
%w[.erb .haml .slim].freeze
- COMPOUND_VIEW_ENDINGS =
Compound view extensions (e.g. foo.html.erb)
%w[.html.erb .html.haml .html.slim].freeze
- CSS_EXTENSIONS =
CSS/preprocessor extensions to scan
%w[.css .scss .sass].freeze
- COMPONENT_EXTENSIONS =
Ruby component file extensions
%w[.rb].freeze
Instance Attribute Summary collapse
-
#component_paths ⇒ Object
Directories to search for ViewComponent / Phlex / etc.
-
#fail_on_unused ⇒ Object
When true, exit with code 1 if any ghost classes are found.
-
#ignore_classes ⇒ Object
── Ignore lists ───────────────────────────────────────────────────── Exact class names to always treat as “used” (never reported as ghost).
-
#ignore_patterns ⇒ Object
Regex patterns — any CSS class name matching any pattern is ignored.
-
#javascript_paths ⇒ Object
Directories to search for JS files (e.g. Stimulus controllers that add classes dynamically — detected as allowlisted dynamic patterns).
-
#scan_javascript_for_classes ⇒ Object
── Dynamic class detection ─────────────────────────────────────────── When true, scan JS/Stimulus files for string literals that look like CSS class names and add them to the used-class set automatically.
-
#scan_ruby_components ⇒ Object
When true, scan Ruby component files (.rb) for string literals that look like CSS classes passed to html attributes.
-
#show_source_files ⇒ Object
── Output ─────────────────────────────────────────────────────────── When true, show which file each ghost class was defined in.
-
#stylesheet_paths ⇒ Object
Directories to search for stylesheets.
-
#view_paths ⇒ Object
── Scan paths ──────────────────────────────────────────────────────── Directories to search for view templates (relative to project root).
Instance Method Summary collapse
-
#initialize ⇒ Configuration
constructor
A new instance of Configuration.
Constructor Details
#initialize ⇒ Configuration
Returns a new instance of Configuration.
56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 |
# File 'lib/rails/css_unused/configuration.rb', line 56 def initialize @view_paths = %w[app/views] @component_paths = %w[app/components] @stylesheet_paths = %w[app/assets/stylesheets app/assets/builds] @javascript_paths = %w[app/javascript] @ignore_classes = %w[ clearfix sr-only visually-hidden active disabled selected current open closed show hide hidden visible fade collapse collapsing ] @ignore_patterns = [ /\Ajs-/, # JS-hook classes /\Ais-/, # state classes (is-active, is-open) /\Ahas-/, # state classes (has-error) /\Adata-/, # sometimes leaked into CSS scanners ] @scan_javascript_for_classes = true @scan_ruby_components = true @show_source_files = false @fail_on_unused = false end |
Instance Attribute Details
#component_paths ⇒ Object
Directories to search for ViewComponent / Phlex / etc. template files.
20 21 22 |
# File 'lib/rails/css_unused/configuration.rb', line 20 def component_paths @component_paths end |
#fail_on_unused ⇒ Object
When true, exit with code 1 if any ghost classes are found. Useful for CI pipelines.
54 55 56 |
# File 'lib/rails/css_unused/configuration.rb', line 54 def fail_on_unused @fail_on_unused end |
#ignore_classes ⇒ Object
── Ignore lists ─────────────────────────────────────────────────────Exact class names to always treat as “used” (never reported as ghost). Good for: utility classes, JS-hook classes, server-side rendered classes.
32 33 34 |
# File 'lib/rails/css_unused/configuration.rb', line 32 def ignore_classes @ignore_classes end |
#ignore_patterns ⇒ Object
Regex patterns — any CSS class name matching any pattern is ignored. Good for: third-party prefixes, state classes, BEM modifier variants. Example: [/Ajs-/, /Ais-/, /Ahas-/]
37 38 39 |
# File 'lib/rails/css_unused/configuration.rb', line 37 def ignore_patterns @ignore_patterns end |
#javascript_paths ⇒ Object
Directories to search for JS files (e.g. Stimulus controllers that add classes dynamically — detected as allowlisted dynamic patterns).
27 28 29 |
# File 'lib/rails/css_unused/configuration.rb', line 27 def javascript_paths @javascript_paths end |
#scan_javascript_for_classes ⇒ Object
── Dynamic class detection ───────────────────────────────────────────When true, scan JS/Stimulus files for string literals that look like CSS class names and add them to the used-class set automatically.
42 43 44 |
# File 'lib/rails/css_unused/configuration.rb', line 42 def scan_javascript_for_classes @scan_javascript_for_classes end |
#scan_ruby_components ⇒ Object
When true, scan Ruby component files (.rb) for string literals that look like CSS classes passed to html attributes.
46 47 48 |
# File 'lib/rails/css_unused/configuration.rb', line 46 def scan_ruby_components @scan_ruby_components end |
#show_source_files ⇒ Object
── Output ───────────────────────────────────────────────────────────When true, show which file each ghost class was defined in.
50 51 52 |
# File 'lib/rails/css_unused/configuration.rb', line 50 def show_source_files @show_source_files end |
#stylesheet_paths ⇒ Object
Directories to search for stylesheets.
23 24 25 |
# File 'lib/rails/css_unused/configuration.rb', line 23 def stylesheet_paths @stylesheet_paths end |
#view_paths ⇒ Object
── Scan paths ────────────────────────────────────────────────────────Directories to search for view templates (relative to project root).
17 18 19 |
# File 'lib/rails/css_unused/configuration.rb', line 17 def view_paths @view_paths end |