From d9e945fb51f86ff2d04c9640f44dec2a7b2b4d10 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ole=20H=C3=BCter?= <57348167+ohueter@users.noreply.github.com> Date: Fri, 15 Oct 2021 16:47:54 +0200 Subject: [PATCH 1/3] Allow boolean values in webpack config `resolve.alias` --- src/webpack.config.js | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/webpack.config.js b/src/webpack.config.js index d0639374..31a11b52 100644 --- a/src/webpack.config.js +++ b/src/webpack.config.js @@ -408,7 +408,11 @@ function resolvePlugins() { function alias() { return aliases.reduce((obj, item) => { const [key, value] = Object.entries(item)[0]; - obj[key] = path.join(servicePath, value); + if (typeof value === "string") { + obj[key] = path.join(servicePath, value); + } else { + obj[key] = value; + } return obj; }, {}); } From cbf618ea4bdc3475cccf56b6d3ceba6f695975ae Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ole=20H=C3=BCter?= <57348167+ohueter@users.noreply.github.com> Date: Sat, 16 Oct 2021 20:10:44 +0200 Subject: [PATCH 2/3] Add test for setting module to `false` in `resolve.alias` --- tests/aliases-false/aliases-false.test.js | 21 +++++++++++++++++++++ tests/aliases-false/handler.js | 12 ++++++++++++ tests/aliases-false/package.json | 15 +++++++++++++++ tests/aliases-false/serverless.yml | 17 +++++++++++++++++ 4 files changed, 65 insertions(+) create mode 100644 tests/aliases-false/aliases-false.test.js create mode 100644 tests/aliases-false/handler.js create mode 100644 tests/aliases-false/package.json create mode 100644 tests/aliases-false/serverless.yml diff --git a/tests/aliases-false/aliases-false.test.js b/tests/aliases-false/aliases-false.test.js new file mode 100644 index 00000000..dc7df8a4 --- /dev/null +++ b/tests/aliases-false/aliases-false.test.js @@ -0,0 +1,21 @@ +const { runSlsCommand, clearNpmCache } = require("../helpers"); + +beforeEach(async () => { + await clearNpmCache(__dirname); +}); + +afterAll(async () => { + await clearNpmCache(__dirname); +}); + +test("aliases-false", async () => { + expect.assertions(1); + + const webpackErrorRegex = /"TypeError: is_sorted(.*)is not a function"/; + + try { + await runSlsCommand(__dirname); + } catch (err) { + expect(err.stdout).toMatch(webpackErrorRegex); + } +}); diff --git a/tests/aliases-false/handler.js b/tests/aliases-false/handler.js new file mode 100644 index 00000000..b1bee1ec --- /dev/null +++ b/tests/aliases-false/handler.js @@ -0,0 +1,12 @@ +import sorted from "is-sorted"; + +export const hello = async (event) => { + sorted([1, 2, 3]); + return { + statusCode: 200, + body: JSON.stringify({ + message: "Go Serverless v1.0! Your function executed successfully!", + input: event, + }), + }; +}; diff --git a/tests/aliases-false/package.json b/tests/aliases-false/package.json new file mode 100644 index 00000000..c1648ffb --- /dev/null +++ b/tests/aliases-false/package.json @@ -0,0 +1,15 @@ +{ + "name": "aliases-false", + "version": "1.0.0", + "description": "", + "main": "handler.js", + "scripts": { + "test": "echo \"Error: no test specified\" && exit 1" + }, + "keywords": [], + "author": "", + "license": "ISC", + "dependencies": { + "is-sorted": "^1.0.5" + } +} diff --git a/tests/aliases-false/serverless.yml b/tests/aliases-false/serverless.yml new file mode 100644 index 00000000..e4b2d85c --- /dev/null +++ b/tests/aliases-false/serverless.yml @@ -0,0 +1,17 @@ +service: my-service + +plugins: + - "../../index" + +custom: + bundle: + aliases: + - "is-sorted": false + +provider: + name: aws + runtime: nodejs12.x + +functions: + hello: + handler: handler.hello From ff8eb607b369962ba03a42d242a43ece702cf11a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ole=20H=C3=BCter?= <57348167+ohueter@users.noreply.github.com> Date: Sat, 16 Oct 2021 21:02:30 +0200 Subject: [PATCH 3/3] Add readme section on excluding modules from bundling --- README.md | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/README.md b/README.md index 53d048c8..a0c3bc3a 100644 --- a/README.md +++ b/README.md @@ -188,6 +188,19 @@ custom: } ``` +- Excluding modules from bundling + + In some cases it might be neccessary to exclude certain modules from bundling with Webpack. This can be achieved by setting the module alias to `false`: + + ``` yml + custom: + bundle: + aliases: + - "module-name": false + ``` + + The `aliases` option is explained in detail in the [Webpack documentation](https://webpack.js.org/configuration/resolve/#resolvealias). + - Usage with WebStorm Here is some info on how to get this plugin to support running tests in WebStorm — https://github.com/AnomalyInnovations/serverless-bundle/issues/5#issuecomment-582237396