class SparkEngine::Assets::Javascripts

Public Instance Methods

asset_tag(*args) click to toggle source
# File lib/spark_engine/plugin/assets/javascripts.rb, line 8
def asset_tag(*args)
  javascript_include_tag(args)
end
build() click to toggle source
# File lib/spark_engine/plugin/assets/javascripts.rb, line 23
def build
  files = find_files
  FileUtils.mkdir_p(File.dirname(cache_file)) if !files.empty?

  if Open3.capture3("npm ls browserify-incremental")[1].empty?
    files.each do |file|

      dest = destination(file)

      FileUtils.rm(dest) if File.exists?(dest)

      response = Open3.capture3(build_command(file))

      # If the file exists and is not empty (a failed build is empty)
      if response.last.success?
        compress(dest) if SparkEngine.production?
        build_success file
      else
        build_failure file

        response = response.map { |l| l.to_s.split("\n") }.flatten

        response.each do |line|
          if !line.empty? &&                      # Don't print empty lines
             !line.match(/node_modules/i) &&      # Ignore stack traces from installed modules
             !line.match(/pid (\d+?) exit/i) &&   # Ignore pid exit stack line
             !line.match(/\[BABEL\] Note:/i)      # Notices from Bable are noisy
            log_error line.gsub(plugin.root+'/','')
          end
        end

        puts ""
      end
    end
  else
    log_error "JS BUILD FAILED: browserifyinc NPM module not found.\n" << "Please add browserifyinc to your package.json and run `npm install`"
    abort
  end
  puts ""
end
build_command(file) click to toggle source
# File lib/spark_engine/plugin/assets/javascripts.rb, line 68
def build_command(file)
  dest = destination(file)
  basename = pathname(file)
  options = "--standalone #{File.basename(file, ".*")} -d"

  cmd = if SparkEngine.production?
          npm_path %Q{browserify #{file} #{options} | #{npm_path('uglifyjs')} --output #{dest} --source-map "url='#{basename}.map',filename='#{basename}',content='inline',includeSources='true'"}
        else
          npm_path "browserify #{file} #{options} > #{dest}"
        end
  puts "Running: #{cmd}" if plugin.debug?

  cmd
end
cache_file(name=nil) click to toggle source
# File lib/spark_engine/plugin/assets/javascripts.rb, line 12
def cache_file(name=nil)
  SparkEngine.rails_path("tmp/cache/assets/.browserify-cache-#{name}.json")
end
ext() click to toggle source
# File lib/spark_engine/plugin/assets/javascripts.rb, line 4
def ext
  "js"
end
filter_files(names) click to toggle source

Find all asset files matching array of names

# File lib/spark_engine/plugin/assets/javascripts.rb, line 17
def filter_files(names)
  [find_files, plugin.svgs.build_paths].flatten.select do |f|
    names.include? File.basename(f).sub(/(\..+)$/,'')
  end
end
npm_path(cmd) click to toggle source
# File lib/spark_engine/plugin/assets/javascripts.rb, line 64
def npm_path(cmd)
  File.join SparkEngine.gem_path, "node_modules/.bin", cmd
end