serverless-bundle
An extension of the serverless-webpack plugin. This plugin bundles your Node.js Lambda functions with sensible defaults so you don't have to maintain your own Webpack configs.
- Linting via ESLint
- Caching for faster builds
- Use ES6
import/export
- Supports transpiling unit tests with babel-jest
- Source map support for proper error messages
And all this works without having to install Webpack, Babel, ESLint, etc. or manage any of their configs. Simply add serverless-bundle to your app and you are done!
- "eslint"- "webpack"- "@babel/core"- "babel-eslint"- "babel-loader"- "eslint-loader"- "@babel/runtime"- "@babel/preset-env"- "serverless-webpack"- "source-map-support"- "webpack-node-externals"- "eslint-config-strongloop"- "@babel/plugin-transform-runtime"- "babel-plugin-source-map-support"+ "serverless-bundle": "^1.1.12"
You can read more about this over on Serverless Stack.
Getting Started
Install the serverless-bundle
plugin using:
$ npm install --save-dev serverless-bundle
Then add it to your serverless.yml
.
plugins:- serverless-bundle
To run your tests using the same Babel config used in the plugin add the following to your package.json
:
"scripts":
Usage
Once installed and added to your serverless.yml
, serverless-bundle will automatically package your functions using Webpack when you run the various serverless commands.
Options
You can configure the following through your serverless.yml
.
custom:bundle:sourcemaps: true # Enable source mapscaching: true # Enable Webpack cachingstats: false # Don't print out any Webpack outputlinting: true # Enable linting as a part of the build process
Advanced Options
-
ESLint
This plugin uses eslint-config-strongloop. You can override this by placing your own
.eslintrc.json
with the rules you'd like to use. If you'd like to ignore specific files, you can use a.eslintignore
file. -
Customizing Babel and Webpack configs
This plugin does not support customizing the Babel and Webpack configs, since serverless-webpack does a pretty good job with that. However, if you think the default config is missing some key features, feel free to open an issue about it.
Support
- Open a new issue if you've found a bug or have some suggestions.
- Or submit a pull request!
Running Locally
To run this project locally, clone the repo and initialize the project.
$ git clone https://github.com/AnomalyInnovations/serverless-bundle$ cd serverless-bundle$ npm install
Run the tests using.
$ npm test
To test the serverless-bundle test
command.
$ npm run test-scripts
To install locally in another project.
$ npm install /path/to/serverless-bundle
Thanks
This plugin would not be possible without the amazing serverless-webpack plugin and the ideas and code from Create React App.
This plugin is maintained by Anomaly Innovations; makers of Seed and Serverless Stack.