From 2818312dcd5f17c461ca0f7db3dc582331c7c32d Mon Sep 17 00:00:00 2001 From: Brandon Mathis Date: Sun, 21 Apr 2013 19:06:51 -0500 Subject: [PATCH] Javascript modules can live in subdirectories --- .themes/classic/_config/require-js.yml | 4 ++-- lib/octopress/js_asset_manager.rb | 10 +++++----- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/.themes/classic/_config/require-js.yml b/.themes/classic/_config/require-js.yml index d852fd0..a33696b 100644 --- a/.themes/classic/_config/require-js.yml +++ b/.themes/classic/_config/require-js.yml @@ -9,11 +9,11 @@ require_js: # Dependiences are added first as globals lib: - lib/modernizr.js - - lib/**/*.* + - lib/**/* # Modules are wrapped with CommonJS functions and must be # Example: # for file: assets/javascripts/modules/some-plugin/awesome.js # require like: var awesome = require('some-plugin/awesome') modules: - - modules/ + - modules diff --git a/lib/octopress/js_asset_manager.rb b/lib/octopress/js_asset_manager.rb index 84d6235..a910a71 100644 --- a/lib/octopress/js_asset_manager.rb +++ b/lib/octopress/js_asset_manager.rb @@ -24,7 +24,8 @@ module Octopress # Read js dependencies from require_js.yml configuration @lib = Octopress.configuration[:require_js][:lib].collect {|item| Dir.glob("#{@js_assets_path}/#{item}") }.flatten.uniq - @modules = Octopress.configuration[:require_js][:modules].collect {|item| Dir.glob("#{@js_assets_path}/#{item}") }.flatten.uniq + @modules = Octopress.configuration[:require_js][:modules].collect {|item| "#{@js_assets_path}/#{item}" }.flatten.uniq + @module_files = @modules.collect {|item| Dir[item+'/**/*'] }.flatten.uniq @template_path = File.expand_path("../../#{Octopress.configuration[:source]}", File.dirname(__FILE__)) @build_path = "/javascripts/build" @@ -32,7 +33,7 @@ module Octopress def get_fingerprint - Digest::MD5.hexdigest(@modules.concat(@lib).uniq.map! do |path| + Digest::MD5.hexdigest(@module_files.concat(@lib).uniq.map! do |path| "#{File.mtime(path).to_i}" end.join) end @@ -51,9 +52,7 @@ module Octopress if File.exists?(file) and File.open(file) {|f| f.readline} =~ /#{@fingerprint}/ false else - modules = @modules.delete_if { |f| @lib.include? f } - puts modules - js = Stitch::Package.new(:dependencies => @lib, :paths => modules).compile + js = Stitch::Package.new(:dependencies => @lib, :paths => @modules).compile js = "/* Octopress fingerprint: #{@fingerprint} */\n" + js js = Uglifier.new.compile js if Octopress.env == 'production' write_path = "#{@template_path}/#{@build_path}" @@ -67,3 +66,4 @@ module Octopress end end end +