Class: Jekyll::Terser::JSFile

Inherits:
StaticFile
  • Object
show all
Defined in:
lib/jekyll-terser.rb

Instance Method Summary collapse

Constructor Details

#initialize(site, base, dir, name, terser = nil) ⇒ JSFile



19
20
21
22
23
24
25
26
27
28
# File 'lib/jekyll-terser.rb', line 19

def initialize(site, base, dir, name, terser = nil)
  super(site, base, dir, name)

  @site   = site
  @base   = base
  @dir    = dir
  @name   = name
  options = site.config.dig('jekyll-terser', 'terser_opts') || {} if terser.nil?
  @terser = terser || ::Terser.new(options.transform_keys(&:to_sym))
end

Instance Method Details

#destination(dest) ⇒ Object



30
31
32
# File 'lib/jekyll-terser.rb', line 30

def destination(dest)
  File.join(dest, @dir, @name)
end

#write(dest) ⇒ Object



34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
# File 'lib/jekyll-terser.rb', line 34

def write(dest)
  dest_path = destination(dest)

  return false if File.exist?(dest_path) && !modified?

  ModTime.mtimes[path] = mtime

  FileUtils.mkdir_p(File.dirname(dest_path))

  begin
    content = File.read(path)
    content = @terser.compile(content)

    File.write(dest_path, content)
  rescue StandardError => e
    Jekyll.logger.warn 'Terser:', e.message.to_s
  end

  return true
end