@@ -34,12 +34,12 @@ namespace :requirejs do
3434
3535 requirejs = ActiveSupport ::OrderedOptions . new
3636
37- task : clean => [ "requirejs:setup" ] do
37+ task clean : [ "requirejs:setup" ] do
3838 FileUtils . remove_entry_secure ( requirejs . config . source_dir , true )
3939 FileUtils . remove_entry_secure ( requirejs . driver_path , true )
4040 end
4141
42- task : setup => [ "assets:environment" ] do
42+ task setup : [ "assets:environment" ] do
4343 unless defined? ( Sprockets )
4444 warn "Cannot precompile assets if sprockets is disabled. Please set config.assets.enabled to true"
4545 exit
@@ -72,41 +72,52 @@ OS X Homebrew users can use 'brew install node'.
7272 end
7373
7474 namespace :precompile do
75- task : all => [ "requirejs:precompile:prepare_source" ,
76- "requirejs:precompile:generate_rjs_driver" ,
77- "requirejs:precompile:run_rjs" ,
78- "requirejs:precompile:digestify_and_compress" ]
75+ task all : [ "requirejs:precompile:prepare_source" ,
76+ "requirejs:precompile:generate_rjs_driver" ,
77+ "requirejs:precompile:run_rjs" ,
78+ "requirejs:precompile:digestify_and_compress" ]
7979
8080 # Invoke another ruby process if we're called from inside
8181 # assets:precompile so we don't clobber the environment
8282 #
8383 # We depend on test_node here so we'll fail early and hard if node
8484 # isn't available.
85- task : external => [ "requirejs:test_node" ] do
85+ task external : [ "requirejs:test_node" ] do
8686 ruby_rake_task "requirejs:precompile:all"
8787 end
8888
89- # copy all assets to tmp/assets
90- task :prepare_source => [ "requirejs:setup" ,
91- "requirejs:clean" ] do
89+ # Copy all assets to the temporary staging directory.
90+ task prepare_source : [ "requirejs:setup" ,
91+ "requirejs:clean" ] do
92+ bower_json_pattern = Regexp . new ( "\\ A(.*)/bower\\ .json\\ z" )
93+ js_ext = requirejs . env . extension_for_mime_type ( "application/javascript" )
94+
9295 requirejs . config . source_dir . mkpath
9396
9497 requirejs . env . each_logical_path do |logical_path |
95- next unless requirejs . config . asset_allowed? ( logical_path )
96- if asset = requirejs . env . find_asset ( logical_path )
97- filename = requirejs . config . source_dir + asset . logical_path
98+ m = bower_json_pattern . match ( logical_path )
99+ bower_logical_path = m && "#{ m [ 1 ] } #{ js_ext } "
100+
101+ next \
102+ if !( requirejs . config . asset_allowed? ( logical_path ) || bower_logical_path )
103+
104+ asset = requirejs . env . find_asset ( logical_path )
105+
106+ if asset
107+ # If a `bower.json` was found, then substitute the logical path for the parsed module name.
108+ filename = requirejs . config . source_dir . join ( bower_logical_path || asset . logical_path )
98109 filename . dirname . mkpath
99110 asset . write_to ( filename )
100111 end
101112 end
102113 end
103114
104- task : generate_rjs_driver => [ "requirejs:setup" ] do
115+ task generate_rjs_driver : [ "requirejs:setup" ] do
105116 requirejs . builder . generate_rjs_driver
106117 end
107118
108- task : run_rjs => [ "requirejs:setup" ,
109- "requirejs:test_node" ] do
119+ task run_rjs : [ "requirejs:setup" ,
120+ "requirejs:test_node" ] do
110121 requirejs . config . build_dir . mkpath
111122 requirejs . config . target_dir . mkpath
112123 requirejs . config . driver_path . dirname . mkpath
@@ -119,7 +130,7 @@ OS X Homebrew users can use 'brew install node'.
119130
120131 # Copy each built asset, identified by a named module in the
121132 # build config, to its Sprockets digestified name.
122- task : digestify_and_compress => [ "requirejs:setup" ] do
133+ task digestify_and_compress : [ "requirejs:setup" ] do
123134 requirejs . config . build_config [ 'modules' ] . each do |m |
124135 asset_name = "#{ requirejs . config . module_name_for ( m ) } .js"
125136 built_asset_path = requirejs . config . build_dir . join ( asset_name )
0 commit comments