{"id":20544,"library":"serverless-webpack","title":"serverless-webpack","description":"A Serverless Framework plugin that bundles Lambda function code using Webpack, enabling tree-shaking, individual packaging, Babel transpilation, and custom loaders. Current stable version is 5.15.4, released April 2025. Requires Node.js >= 20 and supports Serverless v1 through v4 (with esbuild disabled in v4). Active development with monthly releases. Compared to serverless-bundle or serverless-esbuild, this plugin offers broader Webpack version support (3, 4, 5), NPM/Yarn packaging, async webpack config, and seamless integration with serverless-offline.","status":"active","version":"5.15.4","language":"javascript","source_language":"en","source_url":"https://github.com/serverless-heaven/serverless-webpack","tags":["javascript","serverless","1.0","webpack","babel","typescript","es6","plugin","runtime"],"install":[{"cmd":"npm install serverless-webpack","lang":"bash","label":"npm"},{"cmd":"yarn add serverless-webpack","lang":"bash","label":"yarn"},{"cmd":"pnpm add serverless-webpack","lang":"bash","label":"pnpm"}],"dependencies":[{"reason":"peer dependency - plugin hooks into Serverless lifecycle","package":"serverless","optional":false},{"reason":"peer dependency - core bundler","package":"webpack","optional":false},{"reason":"optional peer dependency for TypeScript config support","package":"ts-node","optional":true}],"imports":[{"note":"Plugins in serverless.yml use the package name directly, no import statement.","wrong":"plugins:\n  - serverless-webpack-plugin","symbol":"default","correct":"plugins:\n  - serverless-webpack"},{"note":"The module exports a single function via module.exports, not ESM. Use require() in webpack.config.js.","wrong":"import slsw from 'serverless-webpack'","symbol":"slsw","correct":"const slsw = require('serverless-webpack')"},{"note":"slsw.lib provides access to serverless instance and other utilities. No default export.","wrong":"slsw.default.lib","symbol":"lib","correct":"slsw.lib"},{"note":"TypeScript typings allow default import, but the CJS runtime still works. Prefer import syntax for type safety.","wrong":"const ServerlessWebpack = require('serverless-webpack').default;","symbol":"ServerlessWebpack (TypeScript)","correct":"import ServerlessWebpack from 'serverless-webpack';"}],"quickstart":{"code":"npm install serverless-webpack --save-dev\n\n# serverless.yml\nservice: my-service\nplugins:\n  - serverless-webpack\nprovider:\n  name: aws\n  runtime: nodejs20.x\ncustom:\n  webpack:\n    webpackConfig: 'webpack.config.js'\n    includeModules: false\nfunctions:\n  hello:\n    handler: handler.hello\n\n// webpack.config.js\nconst path = require('path');\nmodule.exports = {\n  entry: './handler.js',\n  target: 'node',\n  output: {\n    libraryTarget: 'commonjs2',\n    path: path.join(__dirname, '.webpack'),\n    filename: '[name].js',\n  },\n};\n\n// handler.js\nexports.hello = async (event) => {\n  return { statusCode: 200, body: 'Hello from serverless-webpack!' };\n};","lang":"javascript","description":"Initialize a Serverless service with serverless-webpack, install plugin, configure webpack for Node.js target, and create a basic handler."},"warnings":[{"fix":"Upgrade Node.js to version 20 or later.","message":"Node.js >= 20 required as of v5.15.4. Node 18 dropped in v5.15.4, Node 16 dropped in v5.14.0.","severity":"breaking","affected_versions":">=5.14.0"},{"fix":"Add build:\n  esbuild: false to serverless.yml.","message":"Serverless v4 requires disabling built-in esbuild: set build.esbuild: false in serverless.yml.","severity":"breaking","affected_versions":">=5.15.0"},{"fix":"Ensure your code does not depend on is-builtin-module being available.","message":"Removed is-builtin-module dependency in v5.15.4. Might break if relying on that polyfill.","severity":"breaking","affected_versions":">=5.15.4"},{"fix":"Migrate to Serverless v4 if needed.","message":"Serverless v1-v3 support may be dropped in future releases. The peer dependency allows v4.","severity":"deprecated","affected_versions":">=5.15.0"},{"fix":"Use copyPackageSectionNames in custom.webpack and ensure package.json has required fields.","message":"Native ESM output requires copyPackageSectionNames config and may need package.json adjustments.","severity":"gotcha","affected_versions":">=5.12.0"},{"fix":"Upgrade to v5.14.0+ or use Node <= 20.12.2 on Windows.","message":"E2E tests and some features may fail on Windows due to spawn EINVAL on Node > 20.12.2 (fixed in v5.14.0).","severity":"gotcha","affected_versions":">=5.0.0 <5.14.0"},{"fix":"Use mode: 'development' or set devtool appropriately for local runs.","message":"When using serverless-offline, webpack config must not have mode: 'production' to allow source maps.","severity":"gotcha","affected_versions":">=4.0.0"}],"env_vars":null,"last_verified":"2026-04-25T00:00:00.000Z","next_check":"2026-07-24T00:00:00.000Z","problems":[{"fix":"Run npm install serverless-webpack --save-dev.","cause":"Plugin not installed or not in devDependencies.","error":"Error: Cannot find module 'serverless-webpack'"},{"fix":"Run npm install webpack --save-dev.","cause":"Missing webpack as a devDependency.","error":"Configuration error: Cannot resolve 'webpack'"},{"fix":"Ensure you are using the correct slsw object from the plugin; check serverless version compatibility.","cause":"Using async webpack config outside of Lambda edge context.","error":"TypeError: slsw.lib.serverless.providers.aws.getAccountId is not a function"},{"fix":"Upgrade serverless-webpack to v5.14.0+.","cause":"Node > 20.12.2 on Windows, older serverless-webpack version.","error":"Error: spawn EINVAL"}],"ecosystem":"npm","meta_description":null,"install_score":null,"install_tag":null,"quickstart_score":null,"quickstart_tag":null}