@@ -34,12 +34,12 @@ namespace :requirejs do
34
34
35
35
requirejs = ActiveSupport ::OrderedOptions . new
36
36
37
- task : clean => [ "requirejs:setup" ] do
37
+ task clean : [ "requirejs:setup" ] do
38
38
FileUtils . remove_entry_secure ( requirejs . config . source_dir , true )
39
39
FileUtils . remove_entry_secure ( requirejs . driver_path , true )
40
40
end
41
41
42
- task : setup => [ "assets:environment" ] do
42
+ task setup : [ "assets:environment" ] do
43
43
unless defined? ( Sprockets )
44
44
warn "Cannot precompile assets if sprockets is disabled. Please set config.assets.enabled to true"
45
45
exit
@@ -72,41 +72,52 @@ OS X Homebrew users can use 'brew install node'.
72
72
end
73
73
74
74
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" ]
79
79
80
80
# Invoke another ruby process if we're called from inside
81
81
# assets:precompile so we don't clobber the environment
82
82
#
83
83
# We depend on test_node here so we'll fail early and hard if node
84
84
# isn't available.
85
- task : external => [ "requirejs:test_node" ] do
85
+ task external : [ "requirejs:test_node" ] do
86
86
ruby_rake_task "requirejs:precompile:all"
87
87
end
88
88
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
+
92
95
requirejs . config . source_dir . mkpath
93
96
94
97
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 )
98
109
filename . dirname . mkpath
99
110
asset . write_to ( filename )
100
111
end
101
112
end
102
113
end
103
114
104
- task : generate_rjs_driver => [ "requirejs:setup" ] do
115
+ task generate_rjs_driver : [ "requirejs:setup" ] do
105
116
requirejs . builder . generate_rjs_driver
106
117
end
107
118
108
- task : run_rjs => [ "requirejs:setup" ,
109
- "requirejs:test_node" ] do
119
+ task run_rjs : [ "requirejs:setup" ,
120
+ "requirejs:test_node" ] do
110
121
requirejs . config . build_dir . mkpath
111
122
requirejs . config . target_dir . mkpath
112
123
requirejs . config . driver_path . dirname . mkpath
@@ -119,7 +130,7 @@ OS X Homebrew users can use 'brew install node'.
119
130
120
131
# Copy each built asset, identified by a named module in the
121
132
# build config, to its Sprockets digestified name.
122
- task : digestify_and_compress => [ "requirejs:setup" ] do
133
+ task digestify_and_compress : [ "requirejs:setup" ] do
123
134
requirejs . config . build_config [ 'modules' ] . each do |m |
124
135
asset_name = "#{ requirejs . config . module_name_for ( m ) } .js"
125
136
built_asset_path = requirejs . config . build_dir . join ( asset_name )
0 commit comments