Class: RailsVite::Manifest

Inherits:
Object
  • Object
show all
Defined in:
lib/rails_vite/manifest.rb

Constant Summary collapse

NO_MANIFEST_DIGEST =
"no-manifest"
RESOLVE_EXTENSIONS =

Vite’s default resolve.extensions order, plus CSS extensions

%w[.mjs .js .mts .ts .jsx .tsx .json .css .scss .sass .less .styl .pcss].freeze

Instance Method Summary collapse

Constructor Details

#initialize(path) ⇒ Manifest

Returns a new instance of Manifest.



5
6
7
# File 'lib/rails_vite/manifest.rb', line 5

def initialize(path)
  @path = path
end

Instance Method Details

#digestObject



29
30
31
32
33
# File 'lib/rails_vite/manifest.rb', line 29

def digest
  Digest::MD5.file(@path).hexdigest
rescue Errno::ENOENT
  NO_MANIFEST_DIGEST
end

#lookup(name) ⇒ Object



12
13
14
15
16
17
18
19
20
21
22
23
# File 'lib/rails_vite/manifest.rb', line 12

def lookup(name)
  manifest = data
  entry = manifest[name] || resolve_with_extension(name, manifest) ||
    raise(MissingEntryError.new(name, @path))

  {
    file: entry["file"],
    integrity: entry["integrity"],
    css: resolve_css(entry, manifest),
    imports: resolve_imports(entry, Set.new, manifest)
  }
end

#path_for(name) ⇒ Object



25
26
27
# File 'lib/rails_vite/manifest.rb', line 25

def path_for(name)
  lookup(name)[:file]
end