lib/puppet-herald/javascript.rb in puppet-herald-0.2.0 vs lib/puppet-herald/javascript.rb in puppet-herald-0.8.0

- old
+ new

@@ -1,8 +1,5 @@ -require 'puppet-herald' -require 'uglifier' - # A module for Herald module PuppetHerald # A javascript processing class class Javascript # Initialize JS class @@ -12,29 +9,38 @@ end # Returns a list of JS files to be inserted into main HTML # @return [Array] list of JS's def files + require 'puppet-herald' @files = nil if PuppetHerald.in_dev? if @files.nil? public_dir = PuppetHerald.relative_dir(@base) all = Dir.chdir(public_dir) { Dir.glob('**/*.js') } - @files = all.reverse.reject { |file| file.match(/_test\.js$/) } + all = all.reverse.reject { |file| file.match(/_test\.js$/) } + @files = all.reject { |file| file.match(/bower_components/) } end @files end # Uglify an application JS's into one minified JS file # @param mapname [String] name of source map to be put into uglified JS # @return [Hash] a hash with uglified JS and source map def uglify(mapname) - sources = files.collect { |file| File.read("#{@base}/#{file}") } + require 'uglifier' + filenames = files + sources = filenames.collect { |file| File.read("#{@base}/#{file}") } source = sources.join "\n" - uglifier = Uglifier.new(source_map_url: mapname) - uglified, source_map = uglifier.compile_with_map(source) - { - 'js' => uglified, - 'js.map' => source_map + options = { + source_map_url: mapname, + source_filename: filenames[0], + compress: { + angular: true, + hoist_vars: true + } } + uglifier = Uglifier.new(options) + uglified, source_map = uglifier.compile_with_map(source) + { 'js' => uglified, 'js.map' => source_map } end end end