Sha256: 40ed6bc967c81bd22599936835116583028ac97ca3723e28a7642427b172f460

Contents?: true

Size: 1.2 KB

Versions: 1

Compression:

Stored size: 1.2 KB

Contents

require "vite_rb/utils"

module ViteRb
  module Helpers
    # Injects an HMR tag during development via a websocket.
    def vite_hmr_tag
      return unless Rails.env == "development"

      hostname = ViteRb
      port = ViteRb

      hmr = %(window.HMR_WEBSOCKET_URL = "ws:#{hostname}:#{port}")

      return tag.script(hmr.html_safe) if Utils.rails?

      hmr
    end

    def vite_asset_path(name, **options)
      asset_path(File.join(vite_dir, name), options)
    end

    def javascript_vite_tag(name, **options)
      options[:type] ||= "module"

      if Utils.dev_server_running?
        javascript_include_tag("/#{vite_dir}/#{entrypoints_dir}/#{name}", options)
      end

      ## TODO: Change to reading from manifest for production
      javascript_include_tag("/#{vite_dir}/#{entrypoints_dir}/#{name}", options)
    end

    # Returns nothing when not in production. CSS only gets extracted
    # during the final build.
    def stylesheet_vite_tag(name, **options)
      return unless Rails.env == "development"

      options[:media] ||= "screen"
      stylesheet_link_tag("/#{vite_dir}/#{name}", options)
    end

    def vite_dir
      ViteRb
    end

    def entrypoints_dir
      ViteRb
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
vite_rb-0.0.1.alpha1 lib/vite_rb/helpers.rb