@@ -82,7 +82,7 @@ module.exports = function(grunt) {
82
82
83
83
var file = { } ;
84
84
file . src = plugin ;
85
- file . dest = path . join ( 'build' , 'plugin ' , filename ) ;
85
+ file . dest = path . join ( 'build' , 'plugins ' , filename ) ;
86
86
87
87
return file ;
88
88
} ) ;
@@ -100,58 +100,71 @@ module.exports = function(grunt) {
100
100
return dict ;
101
101
} , { } ) ;
102
102
103
- var gruntConfig = {
104
- pkg : grunt . file . readJSON ( 'package.json' ) ,
105
- aws : grunt . file . exists ( 'aws.json' ) ? grunt . file . readJSON ( 'aws.json' ) : { } ,
106
-
107
- clean : [ 'build' ] ,
108
-
109
- browserify : {
110
- options : {
111
- banner : grunt . file . read ( 'template/_copyright.js' ) ,
103
+ var browserifyConfig = {
104
+ options : {
105
+ banner : grunt . file . read ( 'template/_copyright.js' ) ,
112
106
browserifyOptions : {
113
- standalone : 'Raven' // umd
114
-
115
- } ,
116
- transform : [ versionify ] ,
117
- plugin : [ derequire ]
118
- } ,
119
- core : {
120
- src : 'src/singleton.js' ,
121
- dest : 'build/raven.js'
107
+ standalone : 'Raven' // umd
122
108
} ,
123
- plugins : {
124
- files : pluginSingleFiles ,
125
- options : {
126
- external : [
127
- '../src/singleton'
128
- ] ,
129
- transform : [
130
- [ versionify ] ,
131
- [ new AddPluginBrowserifyTransformer ( ) ]
132
- ]
133
- }
134
- } ,
135
- 'plugins-combined' : {
136
- files : pluginConcatFiles ,
109
+ transform : [ versionify ] ,
110
+ plugin : [ derequire ]
111
+ } ,
112
+ core : {
113
+ src : 'src/singleton.js' ,
114
+ dest : 'build/raven.js'
115
+ } ,
116
+ 'plugins-combined' : {
117
+ files : pluginConcatFiles ,
137
118
options : {
138
- transform : [
139
- [ versionify ] ,
140
- [ new AddPluginBrowserifyTransformer ( ) ]
141
- ]
142
- }
143
- } ,
144
- test : {
145
- src : 'test/**/*.test.js' ,
119
+ transform : [
120
+ [ versionify ] ,
121
+ [ new AddPluginBrowserifyTransformer ( ) ]
122
+ ]
123
+ }
124
+ } ,
125
+ test : {
126
+ src : 'test/**/*.test.js' ,
146
127
dest : 'build/raven.test.js' ,
147
128
options : {
148
- browserifyOptions : {
149
- debug : true // source maps
150
- } ,
151
- plugin : [ proxyquire . plugin ]
129
+ browserifyOptions : {
130
+ debug : true // source maps
131
+ } ,
132
+ plugin : [ proxyquire . plugin ]
133
+ }
134
+ }
135
+ } ;
136
+
137
+ // Create a dedicated entry in browserify config for
138
+ // each individual plugin (each needs a unique `standalone`
139
+ // config)
140
+ var browserifyPluginTaskNames = [ ] ;
141
+ pluginSingleFiles . forEach ( function ( item ) {
142
+ var name = item . src
143
+ . replace ( / .* \/ / , '' ) // everything before slash
144
+ . replace ( '.js' , '' ) ; // extension
145
+ var capsName = name . charAt ( 0 ) . toUpperCase ( ) + name . slice ( 1 ) ;
146
+ var config = {
147
+ src : item . src ,
148
+ dest : item . dest ,
149
+ options : {
150
+ browserifyOptions : {
151
+ // e.g. Raven.AngularPlugin
152
+ standalone : 'Raven.' + capsName + 'Plugin'
152
153
}
153
154
}
154
- } ,
155
+ } ;
156
+ browserifyConfig [ name ] = config ;
157
+ browserifyPluginTaskNames . push ( 'browserify:' + name ) ;
158
+ } ) ;
159
+
160
+
161
+ var gruntConfig = {
162
+ pkg : grunt . file . readJSON ( 'package.json' ) ,
163
+ aws : grunt . file . exists ( 'aws.json' ) ? grunt . file . readJSON ( 'aws.json' ) : { } ,
164
+
165
+ clean : [ 'build' ] ,
166
+
167
+ browserify : browserifyConfig ,
155
168
156
169
uglify : {
157
170
options : {
@@ -258,7 +271,7 @@ module.exports = function(grunt) {
258
271
copy : {
259
272
dist : {
260
273
expand : true ,
261
- flatten : true ,
274
+ flatten : false ,
262
275
cwd : 'build/' ,
263
276
src : '**' ,
264
277
dest : 'dist/'
@@ -344,7 +357,7 @@ module.exports = function(grunt) {
344
357
// Build tasks
345
358
grunt . registerTask ( '_prep' , [ 'clean' , 'gitinfo' , 'version' ] ) ;
346
359
grunt . registerTask ( 'browserify.core' , [ '_prep' , 'browserify:core' ] ) ;
347
- grunt . registerTask ( 'browserify.plugins' , [ '_prep' , 'browserify:plugins' ] ) ;
360
+ grunt . registerTask ( 'browserify.plugins' , [ '_prep' ] . concat ( browserifyPluginTaskNames ) ) ;
348
361
grunt . registerTask ( 'browserify.plugins-combined' , [ '_prep' , 'browserify:plugins-combined' ] ) ;
349
362
grunt . registerTask ( 'build.test' , [ '_prep' , 'browserify:test' ] ) ;
350
363
grunt . registerTask ( 'build.core' , [ 'browserify.core' , 'uglify' , 'fixSourceMaps' , 'sri:dist' ] ) ;
0 commit comments