Skip to content
Package Node.js Lambda functions without any configuration.
JavaScript
Branch: master
Clone or download

README.md

serverless-bundle Build Status npm

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": {
  "test": "serverless-bundle test"
}

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 maps
    caching: true     # Enable Webpack caching
    stats: false      # Don't print out any Webpack output
    linting: 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.

You can’t perform that action at this time.