Skip to content
This repository was archived by the owner on Apr 24, 2025. It is now read-only.

Commit b387221

Browse files
authored
Merge pull request #5 from FidelLimited/add-function-minify
Add global properties to function and aws-sdk optional
2 parents 292e931 + d332400 commit b387221

File tree

2 files changed

+52
-17
lines changed

2 files changed

+52
-17
lines changed

README.md

Lines changed: 25 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,9 @@
11
Serverless Optimize Plugin
22
=============================
3-
[![serverless](http://public.serverless.com/badges/v3.svg)](http://www.serverless.com)
3+
[![serverless](http://public.serverless.com/badges/v3.svg)](http://www.serverless.com)
4+
[![npm version](https://badge.fury.io/js/serverless-plugin-optimize.svg)](https://badge.fury.io/js/serverless-plugin-optimize)
5+
[![dependencies](https://img.shields.io/david/FidelLimited/serverless-plugin-optimize.svg)](https://www.npmjs.com/package/serverless-plugin-optimize)
6+
[![license](https://img.shields.io/npm/l/serverless-plugin-optimize.svg)](https://raw.githubusercontent.com/FidelLimited/serverless-plugin-optimize/master/LICENSE)
47

58
Bundle with Browserify, transpile with Babel to ES5 and minify with Uglify your Serverless functions.
69

@@ -53,7 +56,7 @@ custom:
5356
exclude: ['ajv']
5457
```
5558

56-
* **minify** (default `true`) - When mininify is set to `false` your functions won't be minified.
59+
* **minify** (default `true`) - When minify is set to `false` your functions won't be minified.
5760

5861
```yml
5962
custom:
@@ -79,15 +82,15 @@ custom:
7982

8083
#### Function
8184

82-
* **optimize** (default `true`) - When optimize is set to `false` the specific function won't be optimized.
85+
* **optimize** (default `true`) - When optimize is set to `false` the function won't be optimized.
8386

8487
```yml
8588
functions:
8689
hello:
8790
optimize: false
8891
```
8992

90-
* **exclude** - Array of modules that will be excluded from the specific function.
93+
* **exclude** - Array of modules that will be excluded from the function.
9194

9295
```yml
9396
functions:
@@ -96,6 +99,24 @@ functions:
9699
exclude: ['ajv']
97100
```
98101

102+
* **minify** - When minify is set to `false` the function won't be minified.
103+
104+
```yml
105+
functions:
106+
hello:
107+
optimize:
108+
minify: false
109+
```
110+
111+
* **presets** - Array of Babel presets for the function.
112+
113+
```yml
114+
functions:
115+
hello:
116+
optimize:
117+
presets: ['es2016']
118+
```
119+
99120
## Contribute
100121

101122
Help us making this plugin better and future proof.

src/index.js

Lines changed: 27 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)