Class: Jekyll::Terser::TerserGenerator

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

Instance Method Summary collapse

Constructor Details

#initialize(config = {}) ⇒ TerserGenerator

Returns a new instance of TerserGenerator.



57
58
59
60
61
62
# File 'lib/jekyll-terser.rb', line 57

def initialize(config = {})
  super

  @options = config.dig('jekyll-terser', 'terser_opts') || {}
  @terser = ::Terser.new(@options.transform_keys(&:to_sym))
end

Instance Method Details

#generate(site) ⇒ Object



64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
# File 'lib/jekyll-terser.rb', line 64

def generate(site)
  return unless !site.config.dig('jekyll-terser', 'only_production') || Jekyll.env == 'production'

  site.static_files.clone.each do |f|
    next unless f.is_a?(Jekyll::StaticFile) && f.path.match?(/\.js$/) && !f.path.end_with?('.min.js')

    Jekyll.logger.info 'Terser:', "Minifying #{f.path}"
    site.static_files.delete(f)

    name        = File.basename(f.path)
    destination = File.dirname(f.path).sub(site.source, '')
    js_file     = JSFile.new(site, site.source, destination, name, @terser)

    site.static_files << js_file
  end
end