Module: ViteRailsLegacy::TagHelpers
- Defined in:
- lib/vite_rails_legacy/tag_helpers.rb
Overview
Public: Allows to render HTML tags for scripts and styles processed by Vite.
Instance Method Summary collapse
-
#vite_asset_path(name, **options) ⇒ Object
Public: Resolves the path for the specified Vite asset.
-
#vite_asset_url(name, **options) ⇒ Object
Public: Resolves the url for the specified Vite asset.
-
#vite_client_tag ⇒ Object
Public: Renders a script tag for vite/client to enable HMR in development.
-
#vite_image_tag(name, **options) ⇒ Object
Public: Renders an <img> tag for the specified Vite asset.
-
#vite_javascript_tag(*names, type: "module", asset_type: :javascript, skip_preload_tags: false, skip_style_tags: false, crossorigin: "anonymous", media: "screen", **options) ⇒ Object
Public: Renders a <script> tag for the specified Vite entrypoints.
-
#vite_react_refresh_tag ⇒ Object
Public: Renders a script tag to enable HMR with React Refresh.
-
#vite_stylesheet_tag(*names, **options) ⇒ Object
Public: Renders a <link> tag for the specified Vite entrypoints.
-
#vite_typescript_tag(*names, **options) ⇒ Object
Public: Renders a <script> tag for the specified Vite entrypoints.
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_rails_legacy/tag_helpers.rb', line 21 def vite_asset_path(name, **) path_to_asset vite_manifest.path_for(name, **) end |
#vite_asset_url(name, **options) ⇒ Object
Public: Resolves the url for the specified Vite asset.
Example:
<%= vite_asset_url 'calendar.css' %> # => "https://example.com/vite/assets/calendar-1016838bab065ae1e122.css"
29 30 31 |
# File 'lib/vite_rails_legacy/tag_helpers.rb', line 29 def vite_asset_url(name, **) url_to_asset vite_manifest.path_for(name, **) end |
#vite_client_tag ⇒ Object
Public: Renders a script tag for vite/client to enable HMR in development.
6 7 8 9 10 |
# File 'lib/vite_rails_legacy/tag_helpers.rb', line 6 def vite_client_tag return unless src = vite_manifest.vite_client_src "<script#{({src: src, type: "module"}, escape: true)}></script>".html_safe end |
#vite_image_tag(name, **options) ⇒ Object
Public: Renders an <img> tag for the specified Vite asset.
61 62 63 64 65 66 67 68 69 |
# File 'lib/vite_rails_legacy/tag_helpers.rb', line 61 def vite_image_tag(name, **) if [:srcset] && ![:srcset].is_a?(String) [:srcset] = [:srcset].map do |src_name, size| "#{vite_asset_path(src_name)} #{size}" end.join(", ") end image_tag(vite_asset_path(name), ) end |
#vite_javascript_tag(*names, type: "module", asset_type: :javascript, skip_preload_tags: false, skip_style_tags: false, crossorigin: "anonymous", media: "screen", **options) ⇒ Object
Public: Renders a <script> tag for the specified Vite entrypoints.
34 35 36 37 38 39 40 41 42 43 44 45 46 47 |
# File 'lib/vite_rails_legacy/tag_helpers.rb', line 34 def vite_javascript_tag(*names, type: "module", asset_type: :javascript, skip_preload_tags: false, skip_style_tags: false, crossorigin: "anonymous", media: "screen", **) entries = vite_manifest.resolve_entries(*names, type: asset_type) = javascript_include_tag(*entries.fetch(:scripts), crossorigin: crossorigin, type: type, extname: false, **) << vite_preload_tag(*entries.fetch(:imports), crossorigin: crossorigin, **) unless << stylesheet_link_tag(*entries.fetch(:stylesheets), media: media, crossorigin: crossorigin, **) unless end |
#vite_react_refresh_tag ⇒ Object
Public: Renders a script tag to enable HMR with React Refresh.
13 14 15 |
# File 'lib/vite_rails_legacy/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.
55 56 57 58 |
# File 'lib/vite_rails_legacy/tag_helpers.rb', line 55 def vite_stylesheet_tag(*names, **) style_paths = names.map { |name| vite_asset_path(name, type: :stylesheet) } stylesheet_link_tag(*style_paths, **) end |
#vite_typescript_tag(*names, **options) ⇒ Object
Public: Renders a <script> tag for the specified Vite entrypoints.
50 51 52 |
# File 'lib/vite_rails_legacy/tag_helpers.rb', line 50 def vite_typescript_tag(*names, **) vite_javascript_tag(*names, asset_type: :typescript, **) end |