class Middleman::JSPMExtension
Public Class Methods
new(app, options_hash = {}, &block)
click to toggle source
Calls superclass method
# File lib/middleman-jspm/extension.rb, line 8 def initialize(app, options_hash = {}, &block) super app.set :jspm_dir, options.jspm_dir app.after_build do |builder| require 'fileutils' require 'uglifier' modules = jspm_get_modules() if modules.length > 0 FileUtils.mkdir_p "#{jspm_dir.gsub('source','build').gsub('/jspm_packages','')}/" if jspm_include_system() assets = [ "jspm_packages/system", "config" ] File.open("#{jspm_dir.gsub('source','build').gsub('/jspm_packages','')}/system.js","w") do |fp| fp.write assets.map{|x| sprockets.find_asset(x).to_s }.join("\n") end end end modules.each do |m| command = m["self-executing"] ? "bundle-sfx" : "bundle" additions_and_subtractions = "" if(m["include"] && m["include"].kind_of?(Array)) additions_and_subtractions += " - " + m["include"].join(" - ") end if(m["exclude"] && !m["self-executing"] && m["exclude"].kind_of?(Array)) additions_and_subtractions += " - " + m["exclude"].join(" - ") end system("node node_modules/jspm/jspm.js #{command} #{m["name"]}#{additions_and_subtractions} #{jspm_dir.gsub('source','build').gsub('/jspm_packages','')}/#{m["name"]}.js") end if modules.length > 0 Dir.glob("#{jspm_dir.gsub('source','build').gsub('/jspm_packages','')}/**/*.js").each do |file| puts "Uglifying #{file}" compressed_source = Uglifier.compile(File.read(file)) File.open(file, 'w') do |f_pointer| f_pointer.write(compressed_source) end end end end end
Public Instance Methods
after_configuration()
click to toggle source
# File lib/middleman-jspm/extension.rb, line 58 def after_configuration app.sprockets.append_path options.jspm_dir end
jspm_get_modules()
click to toggle source
# File lib/middleman-jspm/extension.rb, line 69 def jspm_get_modules() if sprockets.find_asset("modules.json") JSON.parse(sprockets.find_asset("modules.json").to_s) elsif File.exists?('modules.json') JSON.parse(File.read("modules.json")) else [] end end
jspm_include_environment()
click to toggle source
# File lib/middleman-jspm/extension.rb, line 108 def jspm_include_environment() if build? if jspm_include_system() javascript_include_tag("system") end else javascript_include_tag "jspm_packages/system.js", "config.js" end end
jspm_include_module(name)
click to toggle source
# File lib/middleman-jspm/extension.rb, line 79 def jspm_include_module(name) if build? modules = jspm_get_modules() m = modules.find_index{|m| m["name"] == name } if not m.nil? and modules[m]["self-executing"] "<script src=\"#{asset_path(:js, name)}\"></script>" else "<script>System.import('#{name}');</script>" end else "<script>System.import('#{name}');</script>" end end
jspm_include_system()
click to toggle source
# File lib/middleman-jspm/extension.rb, line 95 def jspm_include_system() include_system = false modules = jspm_get_modules() modules.each do |mod| if !mod["self-executing"] include_system = true break end end return include_system end
jspm_path(package, source="npm")
click to toggle source
# File lib/middleman-jspm/extension.rb, line 63 def jspm_path(package, source="npm") Dir.glob("#{jspm_dir}/#{source}/#{package}*").map{|x| if File.directory? x then x else nil end }.delete_if{|x| x.nil? }.sort do |a,b| b.gsub("#{jspm_dir}/#{source}/#{package}@","").split('.').map { |e| e.to_i } <=> a.gsub("#{jspm_dir}/github/twbs/bootstrap-sass@","").split('.').map { |e| e.to_i } end.first end
registered(app, options_hash = {}, &block)
click to toggle source
# File lib/middleman-jspm/extension.rb, line 54 def registered(app, options_hash = {}, &block) end
Also aliased as: included