Module: VitePadrino::TagHelpers

Defined in:
lib/vite_padrino/tag_helpers.rb

Overview

Public: Allows to render HTML tags for scripts and styles processed by Vite.

Instance Method Summary collapse

Instance Method Details

#vite_asset_path(name, **options) ⇒ Object

Public: Resolves the path for the specified Vite asset.

Example:

<%= vite_asset_path 'calendar.css' %> # => "/vite/assets/calendar-1016838bab065ae1e122.css"


21
22
23
# File 'lib/vite_padrino/tag_helpers.rb', line 21

def vite_asset_path(name, **options)
  asset_path vite_manifest.path_for(name, **options)
end

#vite_client_tagObject

Public: Renders a script tag for vite/client to enable HMR in development.



6
7
8
9
10
# File 'lib/vite_padrino/tag_helpers.rb', line 6

def vite_client_tag
  return unless src = vite_manifest.vite_client_src

  (:script, nil, src: src, type: 'module')
end

#vite_javascript_tag(*names, type: 'module', asset_type: :javascript, skip_preload_tags: false, skip_style_tags: false, crossorigin: 'anonymous', **options) ⇒ Object

Public: Renders a <script> tag for the specified Vite entrypoints.



26
27
28
29
30
31
32
33
34
35
36
37
38
# File 'lib/vite_padrino/tag_helpers.rb', line 26

def vite_javascript_tag(*names,
                        type: 'module',
                        asset_type: :javascript,
                        skip_preload_tags: false,
                        skip_style_tags: false,
                        crossorigin: 'anonymous',
                        **options)
  entries = vite_manifest.resolve_entries(*names, type: asset_type)
  tags = javascript_include_tag(*entries.fetch(:scripts), crossorigin: crossorigin, type: type, extname: false, **options)
  tags << vite_preload_tag(*entries.fetch(:imports), crossorigin: crossorigin) unless skip_preload_tags
  tags << stylesheet_link_tag(*entries.fetch(:stylesheets)) unless skip_style_tags
  tags
end

#vite_react_refresh_tagObject

Public: Renders a script tag to enable HMR with React Refresh.



13
14
15
# File 'lib/vite_padrino/tag_helpers.rb', line 13

def vite_react_refresh_tag
  vite_manifest.react_refresh_preamble&.html_safe
end

#vite_stylesheet_tag(*names, **options) ⇒ Object

Public: Renders a <link> tag for the specified Vite entrypoints.



46
47
48
49
# File 'lib/vite_padrino/tag_helpers.rb', line 46

def vite_stylesheet_tag(*names, **options)
  style_paths = names.map { |name| vite_asset_path(name, type: :stylesheet) }
  stylesheet_link_tag(*style_paths, **options)
end

#vite_typescript_tag(*names, **options) ⇒ Object

Public: Renders a <script> tag for the specified Vite entrypoints.



41
42
43
# File 'lib/vite_padrino/tag_helpers.rb', line 41

def vite_typescript_tag(*names, **options)
  vite_javascript_tag(*names, asset_type: :typescript, **options)
end