@@ -68,12 +68,12 @@ class Optimize {
6868
6969 /** Babel presets */
7070 if ( Array . isArray ( this . custom . optimize . presets ) ) {
71- this . optimize . options . presets = this . optimize . options . presets . concat ( this . custom . optimize . presets )
71+ this . optimize . options . presets = this . custom . optimize . presets
7272 }
7373
74- /** Global unique excludes */
74+ /** Global excludes */
7575 if ( Array . isArray ( this . custom . optimize . exclude ) ) {
76- this . optimize . options . exclude = this . optimize . options . exclude . concat ( this . custom . optimize . exclude )
76+ this . optimize . options . exclude = this . custom . optimize . exclude
7777 }
7878 }
7979
@@ -204,6 +204,9 @@ class Optimize {
204204 return BbPromise . resolve ( 'optimization skipped' )
205205 }
206206
207+ /** Log function to optimize */
208+ this . serverless . cli . log ( 'Optimize: ' + functionObject . name )
209+
207210 /** Optimize object */
208211 let optimize = {
209212 bundle : functionBundle ,
@@ -214,11 +217,25 @@ class Optimize {
214217 }
215218 }
216219
217- /** Setup function unique excludes */
218- let functionExclude = [ ] . concat ( this . optimize . options . exclude )
219- if ( functionObject . optimize && Array . isArray ( functionObject . optimize . exclude ) ) {
220- optimize . exclude = functionObject . optimize . exclude
221- functionExclude = functionExclude . concat ( functionObject . optimize . exclude )
220+ /** Function optimize options */
221+ let functionExclude = this . optimize . options . exclude
222+ let functionMinify = this . optimize . options . minify
223+ let functionPresets = this . optimize . options . presets
224+ if ( typeof functionObject . optimize === 'object' ) {
225+ /** Excludes */
226+ if ( Array . isArray ( functionObject . optimize . exclude ) ) {
227+ functionExclude = optimize . exclude = functionObject . optimize . exclude
228+ }
229+
230+ /** Minify flag */
231+ if ( typeof functionObject . optimize . minify === 'boolean' ) {
232+ functionMinify = optimize . minify = functionObject . optimize . minify
233+ }
234+
235+ /** Babel presets */
236+ if ( Array . isArray ( functionObject . optimize . presets ) ) {
237+ functionPresets = optimize . presets = functionObject . optimize . presets
238+ }
222239 }
223240
224241 /** Browserify */
@@ -245,11 +262,11 @@ class Optimize {
245262
246263 /** Browserify babelify transform */
247264 bundler . transform ( babelify , {
248- presets : this . optimize . options . presets
265+ presets : functionPresets
249266 } )
250267
251268 /** Browserify minify transform */
252- if ( this . optimize . options . minify ) {
269+ if ( functionMinify ) {
253270 bundler . transform ( {
254271 global : true
255272 } , uglify )
@@ -275,9 +292,6 @@ class Optimize {
275292
276293 /** Update package */
277294 functionObject . package = optimize . package
278-
279- /** Log optimized function */
280- this . serverless . cli . log ( 'Optimize: ' + functionObject . name )
281295 } )
282296 }
283297}
0 commit comments