Tracked
- NPM Downloads Last Month
- 74746
- Issues
- 0
- Stars
- 0
- Forks
- 0
- Watchers
- 0
Bundle with Browserify, transpile and minify with Babel automatically to your NodeJS runtime compatible JavaScript.
This plugin is a child of the great serverless-optimizer-plugin. Kudos!
Requirements:
Install via npm in the root of your Serverless service:
npm install serverless-plugin-optimize --save-dev
plugins
array in your Serverless serverless.yml
:plugins:
- serverless-plugin-optimize
package:
individually: true
deploy
and invoke local
commandsConfiguration options can be set globally in custom
property and inside each function in optimize
property. Function options overwrite global options.
false
) - When debug is set to true
it won’t remove prefix
folder and will generate debug output at the end of package creation.['aws-sdk']
) - Array of modules or paths that will be excluded.['.js', '.json']
) - Array of optional extra extensions modules that will be included.node_modules
instead of being loaded into browserify bundle. Note that external modules will require that its dependencies are within its directory and this plugin will not do this for you. e.g. you should execute the following: (cd external_modules/some-module && npm i --prod
)node_modules
.false
) - When global is set to true
transforms will run inside node_modules
.true
) - When minify is set to false
Babili preset won’t be added._optimize
) - Folder to output bundle.['env']
) - Array of Babel presets.custom:
optimize:
debug: true
exclude: ['ajv']
extensions: ['.extension']
external: ['sharp']
externalPaths:
sharp: 'external_modules/sharp'
global: true
ignore: ['ajv']
includePaths: ['bin/some-binary-file']
minify: false
prefix: 'dist'
plugins: ['transform-decorators-legacy']
presets: ['es2017']
true
) - When optimize is set to false
the function won’t be optimized.functions:
hello:
optimize: false
node_modules
instead of being loaded into browserify bundle. Note that external modules will require it’s dependencies within it’s directory. (cd external_modules/some-module && npm i --prod
)node_modules
.true
transforms will run inside node_modules
.false
Babili preset won’t be added.functions:
hello:
optimize:
exclude: ['ajv']
extensions: ['.extension']
external: ['sharp']
externalPaths:
sharp: 'external_modules/sharp'
global: false
ignore: ['ajv']
includePaths: ['bin/some-binary-file']
minify: false
plugins: ['transform-decorators-legacy']
presets: ['es2017']
There is a difference you must know between calling files locally and after optimization with includePaths
.
When Optimize packages your functions, it bundles them inside /${prefix}/${functionName}/...
and when your lambda function runs in AWS it will run from root /var/task/${prefix}/${functionName}/...
and your CWD
will be /var/task/
.
Solution in #32 by @hlegendre. path.resolve(process.env.LAMBDA_TASK_ROOT, ${prefix}, process.env.AWS_LAMBDA_FUNCTION_NAME, ${includePathFile})
.
Help us making this plugin better and future proof.
npm install
git checkout -b new_feature
npm run lint
This software is released under the MIT license. See the license file for more details.