Repository: serverless-heaven/serverless-webpack
Pull request #600 (2020-07-16 20:47:22)

Bump lodash from 4.17.4 to 4.17.19 in /examples/include-external-npm-packages
Bumps [lodash](https://github.com/lodash/lodash) from 4.17.4 to 4.17.19.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a href="https://github.com/lodash/lodash/releases">lodash's releases</a>.</em></p>
<blockquote>
<h2>4.17.16</h2>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a href="https://github.com/lodash/lodash/commit/d7fbc52ee0466a6d248f047b5d5c3e6d1e099056"><code>d7fbc52</code></a> Bump to v4.17.19</li>
<li><a href="https://github.com/lodash/lodash/commit/2e1c0f22f425e9c013815b2cd7c2ebd51f49a8d6"><code>2e1c0f2</code></a> Add npm-package</li>
<li><a href="https://github.com/lodash/lodash/commit/1b6c282299f4e0271f932b466c67f0f822aa308e"><code>1b6c282</code></a> Bump to v4.17.18</li>
<li><a href="https://github.com/lodash/lodash/commit/a370ac81408de2da77a82b3c4b61a01a3b9c2fac"><code>a370ac8</code></a> Bump to v4.17.17</li>
<li><a href="https://github.com/lodash/lodash/commit/1144918f3578a84fcc4986da9b806e63a6175cbb"><code>1144918</code></a> Rebuild lodash and docs</li>
<li><a href="https://github.com/lodash/lodash/commit/3a3b0fd339c2109563f7e8167dc95265ed82ef3e"><code>3a3b0fd</code></a> Bump to v4.17.16</li>
<li><a href="https://github.com/lodash/lodash/commit/c84fe82760fb2d3e03a63379b297a1cc1a2fce12"><code>c84fe82</code></a> fix(zipObjectDeep): prototype pollution (<a href="https://github-redirect.dependabot.com/lodash/lodash/issues/4759">#4759</a>)</li>
<li><a href="https://github.com/lodash/lodash/commit/e7b28ea6cb17b4ca021e7c9d66218c8c89782f32"><code>e7b28ea</code></a> Sanitize sourceURL so it cannot affect evaled code (<a href="https://github-redirect.dependabot.com/lodash/lodash/issues/4518">#4518</a>)</li>
<li><a href="https://github.com/lodash/lodash/commit/0cec225778d4ac26c2bac95031ecc92a94f08bbb"><code>0cec225</code></a> Fix lodash.isEqual for circular references (<a href="https://github-redirect.dependabot.com/lodash/lodash/issues/4320">#4320</a>) (<a href="https://github-redirect.dependabot.com/lodash/lodash/issues/4515">#4515</a>)</li>
<li><a href="https://github.com/lodash/lodash/commit/94c3a8133cb4fcdb50db72b4fd14dd884b195cd5"><code>94c3a81</code></a> Document matches* shorthands for over* methods (<a href="https://github-redirect.dependabot.com/lodash/lodash/issues/4510">#4510</a>) (<a href="https://github-redirect.dependabot.com/lodash/lodash/issues/4514">#4514</a>)</li>
<li>Additional commits viewable in <a href="https://github.com/lodash/lodash/compare/4.17.4...4.17.19">compare view</a></li>
</ul>
</details>
<details>
<summary>Maintainer changes</summary>
<p>This version was pushed to npm by <a href="https://www.npmjs.com/~mathias">mathias</a>, a new releaser for lodash since your current version.</p>
</details>
<br />


[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=lodash&package-manager=npm_and_yarn&previous-version=4.17.4&new-version=4.17.19)](https://help.github.com/articles/configuring-automated-security-fixes)

Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
- `@dependabot use these labels` will set the current labels as the default for future PRs for this repo and language
- `@dependabot use these reviewers` will set the current reviewers as the default for future PRs for this repo and language
- `@dependabot use these assignees` will set the current assignees as the default for future PRs for this repo and language
- `@dependabot use this milestone` will set the current milestone as the default for future PRs for this repo and language

You can disable automated security fix PRs for this repo from the [Security Alerts page](https://github.com/serverless-heaven/serverless-webpack/network/alerts).

</details>


Patch:
diff --git a/.appveyor.yml b/.appveyor.yml
index 4b80523..06d76b1 100644
--- a/.appveyor.yml
+++ b/.appveyor.yml
@@ -1,11 +1,10 @@
 environment:
   matrix:
-    - nodejs_version: "10"
-    - nodejs_version: "12"
+    - NODEJS_VERSION: "10"
 
 install:
   # Get the version of Node.js
-  - ps: Install-Product node $env:nodejs_version
+  - ps: Install-Product node $Env:NODEJS_VERSION
   # install modules
   - npm install
   - node --version
diff --git a/.eslintrc.yml b/.eslintrc
similarity index 100%
rename from .eslintrc.yml
rename to .eslintrc
diff --git a/.travis.yml b/.travis.yml
index 9ce7663..198631a 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -1,12 +1,12 @@
-os: linux
-dist: xenial
 language: node_js
 
-jobs:
+matrix:
   include:
     - node_js: '10'
     - node_js: '12'
 
+sudo: false
+
 install:
   - travis_retry npm install
 
diff --git a/CHANGELOG.md b/CHANGELOG.md
deleted file mode 100644
index 4cc3a83..0000000
--- a/CHANGELOG.md
+++ /dev/null
@@ -1,162 +0,0 @@
-# Change Log
-
-* 5.3.3
-  * default webpackConfig.node should be false #502
-  * Fix yarn list --json stdOut parsing. fixes #388 #516
-  * Updated release notes #585
-  * Updated Node versions in CI #587
-  * Remove optional peer dependencies #542
-  * Check for node runtimes first #579
-  * Bumps lodash from 4.17.15 to 4.17.19 #602
-
-* 5.3.2
-  * Fix eslint prettier #518
-  * Add TypeScript definition #520
-  * Project dependencies updated #524
-  * fix typescript example lockfile #526
-  * Typescript example babel loader #527
-  * Bump tar from 2.2.1 to 2.2.2 in /examples/babel #544
-  * Bump acorn from 6.3.0 to 6.4.1 in /examples/typescript #562
-  * Bump eslint-utils from 1.4.0 to 1.4.3 #567
-  * Bump handlebars from 4.1.2 to 4.7.6 #568
-  * Addressed npm security vulnerabilities #569
-  * Bump https-proxy-agent from 2.2.2 to 2.2.4 #572
-  * Bump https-proxy-agent from 2.2.2 to 2.2.4 in /examples/typescript #573
-  * Bump extend from 3.0.1 to 3.0.2 in /examples/babel #574
-  * Bump stringstream from 0.0.5 to 0.0.6 in /examples/babel #575
-  * Bump tough-cookie from 2.3.2 to 2.3.4 in /examples/babel #576
-  * Bump sshpk from 1.13.1 to 1.16.1 in /examples/babel #577
-  * Bump debug from 2.6.8 to 2.6.9 in /examples/babel #578
-
-* 5.3.1
-  * Fixed bug that prevented to use handlers using import [#505][link-505]
-  * Do not print empty lines in webpack stats [#499][link-499]
-  * Added git hooks to improved code quality and developer experience [#496][link-496]
-
-* 5.3.0
-  * Restore compatibility with TypeScript [#449][link-449] [#465][link-465]
-  * Allow glob for excludeFiles [#471][link-471]
-  * Support Webpack 5 [#472][link-472]
-  * Use colored output depending on tty [#480][link-480]
-  * Allow to keep webpack folder [#453][link-453] [#467][link-467]
-  * Add ability to exclude files from handler lookup [#433][link-433]
-  * Documentation fixes [#429][link-429]
-
-* 5.2.0
-  * Show info message in verbose mode if aws-sdk has been excluded automatically [#393][link-393]
-  * Added support for asynchronous webpack configuration [#412][link-412]
-  * Better error message if handlers are not found [#418][link-418]
-
-* 5.1.5
-  * Re-publish of 5.1.4 without yarn.lock
-
-* 5.1.4
-  * Fix support for Yarn resolutions definitions [#379][link-379]
-  * Better debugging for "Unable to import module ..." errors: Detect runtime dependencies that are only declared as devDependencies [#384][link-384]
-  * Documentation updates [#382][link-382]
-
-* 5.1.3
-  * Fixed issue with Yarn and file references as dependencies [#370][link-370]
-
-* 5.1.2
-  * Fixed issue that leads to `Unexpected end of JSON` in projects with lots of dependencies [#309][link-309][#373][link-373]
-  * Update webpack-4 example with VSCode debugging configuration [#365][link-365]
-
-* 5.1.1
-  * Fixed local invoke watch mode not executing changed files [#349][link-349]
-  * Added Webpack 4 example [#355][link-355]
-  * Documentation updates [#354][link-354]
-
-* 5.1.0
-  * Support Yarn [#286][link-286]
-  * Allow local invoke to use existing compiled output [#341][link-341] [#275][link-275]
-  * Support custom packager scripts [#343][link-343] [#342][link-342]
-
-* 5.0.0
-  * Support Webpack 4 [#331][link-331] [#328][link-328]
-  * BREAKING: Drop support for Webpack 2
-  * Allow to check for local invocation in the webpack configuration [#232][link-232]
-  * New centralized configuration with fallback to the old one [#336][link-336]
-  * Improved unit tests and actual coverage calculation [#337][link-337]
-
-* 4.4.0
-  * Support serverless-step-functions-offline [#313][link-313]
-  * Fixed webpack documentation links [#326][link-326]
-  * Abstracted packager interface [#329][link-329]
-
-* 4.3.0
-  * Add new `webpack:compile:watch:compile` event [#315][link-315]
-  * Added note to README about using yarn [#316][link-316]
-  * Made babel dynamic example the default babel example [#253][link-253]
-  * Documentation fixes [#317][link-317] [#321][link-321]
-
-* 4.2.0
-  * Support local file references in package.json [#263][link-263]
-  * Updated used tools (dev dependencies)
-
-* 4.1.0
-  * Prohibit manual entry configuration with individual packaging [#272][link-272]
-  * Fixed bug with stats in webpack config for individual packaging [#278][link-278]
-  * Fixed bug with startup order in combination with serverless-offline [#279][link-279]
-  * Default target to "node" if not set [#276][link-276]
-  * Support `serverless run` including watch mode [#269][link-269]
-
-* 4.0.0
-  * BREAKING: Expose lifecycle events for plugin authors [#254][link-254]
-  * Fixed deprecated hook warning [#126][link-126]
-  * Support forceExclude option for external modules [#247][link-247]
-  * Support stats output configuration in webpack config [#260][link-260]
-  * Google: Only integrate package.json but not node modules into artifact [#264][link-264]
-  * Documentation fixes and updates [#265][link-265]
-  * Updated examples [#250][link-250]
-
-* 3.1.2
-  * Fix issue where dependencies with dots in their names would not be installed [#251][link-251]
-
-* 3.1.1
-  * Fix issue where locked dependencies (package-lock.json) were ignored [#245][link-245]
-
-* 3.1.0
-  * Allow filesystem polling in watch mode (`--webpack-use-polling`) [#215][link-215]
-  * Allow forced include of not referenced modules [#217][link-217]
-  * Automatically include peer dependencies of used modules [#223][link-223]
-  * Show explicit message if the provided webpack config can not be loaded [#234][link-234]
-  * Improve examples [#227][link-227]
-  * Update 3rd party provider compatibility table [#221][link-221]
-  * Added automatic Travis and Coveralls builds to increase stability
-
-* 3.0.0
-  * Integrate with `serverless invoke local` [#151][link-151]
-  * Support watch mode with `serverless invoke local --watch`
-  * Stabilized and improved the bundling of node modules [#116][link-116], [#117][link-117]
-  * Improved interoperability with Serverless and 3rd party plugins [#173][link-173]
-  * Support individual packaging of the functions in a service [#120][link-120]
-  * Allow setting stdio max buffers for NPM operations [#185][link-185]
-  * Support bundling of node modules via node-externals whitelist [#186][link-186]
-  * Removed the `webpack serve` command in favor of [`serverless-offline`][link-serverless-offline] [#152][link-152]
-  * Updated examples [#179][link-179]
-  * Added missing unit tests to improve code stability
-  * Fixed unit tests to run on Windows [#145][link-145]
-
-* 2.2.2
-  * Reverted breaking change introduced in default output config [#202][link-202]
-
-* 2.2.1
-  * Restore functionality for Google provider [#193][link-193]
-
-* 2.2.0
-  * Allow full dynamic configurations [#158][link-158]
-  * Fix a bug that prevented the entries lib export to work with TypeScript [#165][link-165]
-
-* 2.1.0
-  * Added support for webpack configuration in TypeScript format [#129][link-129]
-  * Fixed bug with serverless-offline exec [#154][link-154]
-  * Added unit tests for cleanup. Updated test framework [#11][link-11]
-  * Support single function deploy and packaging [#107][link-107]
-  * Fixed path exception bug with individual packaging and SLS 1.18 [#159][link-159]
-
-* 2.0.0
-  * Support arbitrary Webpack versions as peer dependency [#83][link-83]
-  * Support `serverless offline start` invocation [#131][link-131]
-  * Documentation updates [#88][link-88], [#132][link-132], [#140][link-140], [#141][link-141], [#144][link-144]
-  * Print Webpack stats on recompile [#127][link-127]
diff --git a/README.md b/README.md
index 899c983..155b143 100644
--- a/README.md
+++ b/README.md
@@ -756,7 +756,138 @@ me to take it over and continue working on the project. That helped to revive it
 
 ## Release Notes
 
-See [CHANGELOG.md](./CHANGELOG.md)
+* 5.3.1
+  * Fixed bug that prevented to use handlers using import [#505][link-505]
+  * Do not print empty lines in webpack stats [#499][link-499]
+  * Added git hooks to improved code quality and developer experience [#496][link-496]
+
+* 5.3.0
+  * Restore compatibility with TypeScript [#449][link-449] [#465][link-465]
+  * Allow glob for excludeFiles [#471][link-471]
+  * Support Webpack 5 [#472][link-472]
+  * Use colored output depending on tty [#480][link-480]
+  * Allow to keep webpack folder [#453][link-453] [#467][link-467]
+  * Add ability to exclude files from handler lookup [#433][link-433]
+  * Documentation fixes [#429][link-429]
+
+* 5.2.0
+  * Show info message in verbose mode if aws-sdk has been excluded automatically [#393][link-393]
+  * Added support for asynchronous webpack configuration [#412][link-412]
+  * Better error message if handlers are not found [#418][link-418]
+
+* 5.1.5
+  * Re-publish of 5.1.4 without yarn.lock
+
+* 5.1.4
+  * Fix support for Yarn resolutions definitions [#379][link-379]
+  * Better debugging for "Unable to import module ..." errors: Detect runtime dependencies that are only declared as devDependencies [#384][link-384]
+  * Documentation updates [#382][link-382]
+
+* 5.1.3
+  * Fixed issue with Yarn and file references as dependencies [#370][link-370]
+
+* 5.1.2
+  * Fixed issue that leads to `Unexpected end of JSON` in projects with lots of dependencies [#309][link-309][#373][link-373]
+  * Update webpack-4 example with VSCode debugging configuration [#365][link-365]
+
+* 5.1.1
+  * Fixed local invoke watch mode not executing changed files [#349][link-349]
+  * Added Webpack 4 example [#355][link-355]
+  * Documentation updates [#354][link-354]
+
+* 5.1.0
+  * Support Yarn [#286][link-286]
+  * Allow local invoke to use existing compiled output [#341][link-341] [#275][link-275]
+  * Support custom packager scripts [#343][link-343] [#342][link-342]
+
+* 5.0.0
+  * Support Webpack 4 [#331][link-331] [#328][link-328]
+  * BREAKING: Drop support for Webpack 2
+  * Allow to check for local invocation in the webpack configuration [#232][link-232]
+  * New centralized configuration with fallback to the old one [#336][link-336]
+  * Improved unit tests and actual coverage calculation [#337][link-337]
+
+* 4.4.0
+  * Support serverless-step-functions-offline [#313][link-313]
+  * Fixed webpack documentation links [#326][link-326]
+  * Abstracted packager interface [#329][link-329]
+
+* 4.3.0
+  * Add new `webpack:compile:watch:compile` event [#315][link-315]
+  * Added note to README about using yarn [#316][link-316]
+  * Made babel dynamic example the default babel example [#253][link-253]
+  * Documentation fixes [#317][link-317] [#321][link-321]
+
+* 4.2.0
+  * Support local file references in package.json [#263][link-263]
+  * Updated used tools (dev dependencies)
+
+* 4.1.0
+  * Prohibit manual entry configuration with individual packaging [#272][link-272]
+  * Fixed bug with stats in webpack config for individual packaging [#278][link-278]
+  * Fixed bug with startup order in combination with serverless-offline [#279][link-279]
+  * Default target to "node" if not set [#276][link-276]
+  * Support `serverless run` including watch mode [#269][link-269]
+
+* 4.0.0
+  * BREAKING: Expose lifecycle events for plugin authors [#254][link-254]
+  * Fixed deprecated hook warning [#126][link-126]
+  * Support forceExclude option for external modules [#247][link-247]
+  * Support stats output configuration in webpack config [#260][link-260]
+  * Google: Only integrate package.json but not node modules into artifact [#264][link-264]
+  * Documentation fixes and updates [#265][link-265]
+  * Updated examples [#250][link-250]
+
+* 3.1.2
+  * Fix issue where dependencies with dots in their names would not be installed [#251][link-251]
+
+* 3.1.1
+  * Fix issue where locked dependencies (package-lock.json) were ignored [#245][link-245]
+
+* 3.1.0
+  * Allow filesystem polling in watch mode (`--webpack-use-polling`) [#215][link-215]
+  * Allow forced include of not referenced modules [#217][link-217]
+  * Automatically include peer dependencies of used modules [#223][link-223]
+  * Show explicit message if the provided webpack config can not be loaded [#234][link-234]
+  * Improve examples [#227][link-227]
+  * Update 3rd party provider compatibility table [#221][link-221]
+  * Added automatic Travis and Coveralls builds to increase stability
+
+* 3.0.0
+  * Integrate with `serverless invoke local` [#151][link-151]
+  * Support watch mode with `serverless invoke local --watch`
+  * Stabilized and improved the bundling of node modules [#116][link-116], [#117][link-117]
+  * Improved interoperability with Serverless and 3rd party plugins [#173][link-173]
+  * Support individual packaging of the functions in a service [#120][link-120]
+  * Allow setting stdio max buffers for NPM operations [#185][link-185]
+  * Support bundling of node modules via node-externals whitelist [#186][link-186]
+  * Removed the `webpack serve` command in favor of [`serverless-offline`][link-serverless-offline] [#152][link-152]
+  * Updated examples [#179][link-179]
+  * Added missing unit tests to improve code stability
+  * Fixed unit tests to run on Windows [#145][link-145]
+
+* 2.2.2
+  * Reverted breaking change introduced in default output config [#202][link-202]
+
+* 2.2.1
+  * Restore functionality for Google provider [#193][link-193]
+
+* 2.2.0
+  * Allow full dynamic configurations [#158][link-158]
+  * Fix a bug that prevented the entries lib export to work with TypeScript [#165][link-165]
+
+* 2.1.0
+  * Added support for webpack configuration in TypeScript format [#129][link-129]
+  * Fixed bug with serverless-offline exec [#154][link-154]
+  * Added unit tests for cleanup. Updated test framework [#11][link-11]
+  * Support single function deploy and packaging [#107][link-107]
+  * Fixed path exception bug with individual packaging and SLS 1.18 [#159][link-159]
+
+* 2.0.0
+  * Support arbitrary Webpack versions as peer dependency [#83][link-83]
+  * Support `serverless offline start` invocation [#131][link-131]
+  * Documentation updates [#88][link-88], [#132][link-132], [#140][link-140], [#141][link-141], [#144][link-144]
+  * Print Webpack stats on recompile [#127][link-127]
 
 [ico-serverless]: http://public.serverless.com/badges/v3.svg
 [ico-license]: https://img.shields.io/github/license/serverless-heaven/serverless-webpack.svg
diff --git a/examples/include-external-npm-packages/yarn.lock b/examples/include-external-npm-packages/yarn.lock
index f688bb5..e8e78ff 100644
--- a/examples/include-external-npm-packages/yarn.lock
+++ b/examples/include-external-npm-packages/yarn.lock
@@ -56,12 +56,6 @@ ansi-regex@^3.0.0:
   version "3.0.0"
   resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-3.0.0.tgz#ed0317c322064f79466c02966bddb605ab37d998"
 
-ansi-styles@^3.1.0:
-  version "3.2.0"
-  resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.0.tgz#c159b8d5be0f9e5a6f346dab94f16ce022161b88"
-  dependencies:
-    color-convert "^1.9.0"
-
 anymatch@^1.3.0:
   version "1.3.2"
   resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-1.3.2.tgz#553dcb8f91e3c889845dfdba34c77721b90b9d7a"
@@ -73,29 +67,32 @@ aproba@^1.0.3:
   version "1.2.0"
   resolved "https://registry.yarnpkg.com/aproba/-/aproba-1.2.0.tgz#6802e6264efd18c790a1b0d517f0f2627bf2c94a"
 
-archiver-utils@^1.3.0:
-  version "1.3.0"
-  resolved "https://registry.yarnpkg.com/archiver-utils/-/archiver-utils-1.3.0.tgz#e50b4c09c70bf3d680e32ff1b7994e9f9d895174"
+archiver-utils@^2.1.0:
+  version "2.1.0"
+  resolved "https://registry.yarnpkg.com/archiver-utils/-/archiver-utils-2.1.0.tgz#e8a460e94b693c3e3da182a098ca6285ba9249e2"
   dependencies:
-    glob "^7.0.0"
-    graceful-fs "^4.1.0"
+    glob "^7.1.4"
+    graceful-fs "^4.2.0"
     lazystream "^1.0.0"
-    lodash "^4.8.0"
-    normalize-path "^2.0.0"
+    lodash.defaults "^4.2.0"
+    lodash.difference "^4.5.0"
+    lodash.flatten "^4.4.0"
+    lodash.isplainobject "^4.0.6"
+    lodash.union "^4.6.0"
+    normalize-path "^3.0.0"
     readable-stream "^2.0.0"
 
-archiver@^2.0.0:
-  version "2.1.0"
-  resolved "https://registry.yarnpkg.com/archiver/-/archiver-2.1.0.tgz#d2df2e8d5773a82c1dcce925ccc41450ea999afd"
+archiver@^3.0.3:
+  version "3.1.1"
+  resolved "https://registry.yarnpkg.com/archiver/-/archiver-3.1.1.tgz#9db7819d4daf60aec10fe86b16cb9258ced66ea0"
   dependencies:
-    archiver-utils "^1.3.0"
-    async "^2.0.0"
+    archiver-utils "^2.1.0"
+    async "^2.6.3"
     buffer-crc32 "^0.2.1"
-    glob "^7.0.0"
-    lodash "^4.8.0"
-    readable-stream "^2.0.0"
-    tar-stream "^1.5.0"
-    zip-stream "^1.2.0"
+    glob "^7.1.4"
+    readable-stream "^3.4.0"
+    tar-stream "^2.1.0"
+    zip-stream "^2.1.2"
 
 are-we-there-yet@~1.1.2:
   version "1.1.4"
@@ -104,6 +101,10 @@ are-we-there-yet@~1.1.2:
     delegates "^1.0.0"
     readable-stream "^2.0.6"
 
+arg@^4.1.0:
+  version "4.1.3"
+  resolved "https://registry.yarnpkg.com/arg/-/arg-4.1.3.tgz#269fc7ad5b8e42cb63c896d5666017261c144089"
+
 arr-diff@^2.0.0:
   version "2.0.0"
   resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-2.0.0.tgz#8f3b827f955a8bd669697e4a4256ac3ceae356cf"
@@ -118,10 +119,6 @@ array-unique@^0.2.1:
   version "0.2.1"
   resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.2.1.tgz#a1d97ccafcbc2625cc70fadceb36a50c58b01a53"
 
-arrify@^1.0.0:
-  version "1.0.1"
-  resolved "https://registry.yarnpkg.com/arrify/-/arrify-1.0.1.tgz#898508da2226f380df904728456849c1501a4b0d"
-
 asn1.js@^4.0.0:
   version "4.9.1"
   resolved "https://registry.yarnpkg.com/asn1.js/-/asn1.js-4.9.1.tgz#48ba240b45a9280e94748990ba597d216617fd40"
@@ -152,12 +149,18 @@ async-each@^1.0.0:
   version "1.0.1"
   resolved "https://registry.yarnpkg.com/async-each/-/async-each-1.0.1.tgz#19d386a1d9edc6e7c1c85d388aedbcc56d33602d"
 
-async@^2.0.0, async@^2.1.2:
+async@^2.1.2:
   version "2.5.0"
   resolved "https://registry.yarnpkg.com/async/-/async-2.5.0.tgz#843190fd6b7357a0b9e1c956edddd5ec8462b54d"
   dependencies:
     lodash "^4.14.0"
 
+async@^2.6.3:
+  version "2.6.3"
+  resolved "https://registry.yarnpkg.com/async/-/async-2.6.3.tgz#d72625e2344a3656e3a3ad4fa749fa83299d82ff"
+  dependencies:
+    lodash "^4.17.14"
+
 asynckit@^0.4.0:
   version "0.4.0"
   resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79"
@@ -211,11 +214,13 @@ binary-extensions@^1.0.0:
   version "1.10.0"
   resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-1.10.0.tgz#9aeb9a6c5e88638aad171e167f5900abe24835d0"
 
-bl@^1.0.0:
-  version "1.2.1"
-  resolved "https://registry.yarnpkg.com/bl/-/bl-1.2.1.tgz#cac328f7bee45730d404b692203fcb590e172d5e"
+bl@^4.0.1:
+  version "4.0.2"
+  resolved "https://registry.yarnpkg.com/bl/-/bl-4.0.2.tgz#52b71e9088515d0606d9dd9cc7aa48dc1f98e73a"
   dependencies:
-    readable-stream "^2.0.5"
+    buffer "^5.5.0"
+    inherits "^2.0.4"
+    readable-stream "^3.4.0"
 
 block-stream@*:
   version "0.0.9"
@@ -223,9 +228,9 @@ block-stream@*:
   dependencies:
     inherits "~2.0.0"
 
-bluebird@^3.5.0:
-  version "3.5.1"
-  resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.5.1.tgz#d9551f9de98f1fcda1e683d17ee91a0602ee2eb9"
+bluebird@^3.5.5:
+  version "3.7.2"
+  resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.7.2.tgz#9f229c15be272454ffa973ace0dbee79a1b0c36f"
 
 bn.js@^4.0.0, bn.js@^4.1.0, bn.js@^4.1.1, bn.js@^4.4.0:
   version "4.11.8"
@@ -320,10 +325,14 @@ browserify-zlib@^0.1.4:
   dependencies:
     pako "~0.2.0"
 
-buffer-crc32@^0.2.1:
+buffer-crc32@^0.2.1, buffer-crc32@^0.2.13:
   version "0.2.13"
   resolved "https://registry.yarnpkg.com/buffer-crc32/-/buffer-crc32-0.2.13.tgz#0d333e3f00eac50aa1454abd30ef8c2a5d9a7242"
 
+buffer-from@^1.0.0:
+  version "1.1.1"
+  resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.1.tgz#32713bc028f75c02fdb710d7c7bcec1f2c6070ef"
+
 buffer-xor@^1.0.3:
   version "1.0.3"
   resolved "https://registry.yarnpkg.com/buffer-xor/-/buffer-xor-1.0.3.tgz#26e61ed1422fb70dd42e6e36729ed51d855fe8d9"
@@ -336,10 +345,21 @@ buffer@4.9.1, buffer@^4.3.0:
     ieee754 "^1.1.4"
     isarray "^1.0.0"
 
+buffer@^5.5.0:
+  version "5.6.0"
+  resolved "https://registry.yarnpkg.com/buffer/-/buffer-5.6.0.tgz#a31749dc7d81d84db08abf937b6b8c4033f62786"
+  dependencies:
+    base64-js "^1.0.2"
+    ieee754 "^1.1.4"
+
 builtin-modules@^1.0.0:
   version "1.1.1"
   resolved "https://registry.yarnpkg.com/builtin-modules/-/builtin-modules-1.1.1.tgz#270f076c5a72c02f5b65a47df94c5fe3a278892f"
 
+builtin-modules@^3.0.0:
+  version "3.1.0"
+  resolved "https://registry.yarnpkg.com/builtin-modules/-/builtin-modules-3.1.0.tgz#aad97c15131eb76b65b50ef208e7584cd76a7484"
+
 builtin-status-codes@^3.0.0:
   version "3.0.0"
   resolved "https://registry.yarnpkg.com/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz#85982878e21b98e1c66425e03d0174788f569ee8"
@@ -363,14 +383,6 @@ center-align@^0.1.1:
     align-text "^0.1.3"
     lazy-cache "^1.0.3"
 
-chalk@^2.0.0:
-  version "2.3.0"
-  resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.3.0.tgz#b5ea48efc9c1793dccc9b4767c93914d3f2d52ba"
-  dependencies:
-    ansi-styles "^3.1.0"
-    escape-string-regexp "^1.0.5"
-    supports-color "^4.0.0"
-
 chokidar@^1.7.0:
   version "1.7.0"
   resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-1.7.0.tgz#798e689778151c8076b4b360e5edd28cda2bb468"
@@ -417,30 +429,20 @@ code-point-at@^1.0.0:
   version "1.1.0"
   resolved "https://registry.yarnpkg.com/code-point-at/-/code-point-at-1.1.0.tgz#0d070b4d043a5bea33a2f1a40e2edb3d9a4ccf77"
 
-color-convert@^1.9.0:
-  version "1.9.0"
-  resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.0.tgz#1accf97dd739b983bf994d56fec8f95853641b7a"
-  dependencies:
-    color-name "^1.1.1"
-
-color-name@^1.1.1:
-  version "1.1.3"
-  resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25"
-
 combined-stream@^1.0.5, combined-stream@~1.0.5:
   version "1.0.5"
   resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.5.tgz#938370a57b4a51dea2c77c15d5c5fdf895164009"
   dependencies:
     delayed-stream "~1.0.0"
 
-compress-commons@^1.2.0:
-  version "1.2.2"
-  resolved "https://registry.yarnpkg.com/compress-commons/-/compress-commons-1.2.2.tgz#524a9f10903f3a813389b0225d27c48bb751890f"
+compress-commons@^2.1.1:
+  version "2.1.1"
+  resolved "https://registry.yarnpkg.com/compress-commons/-/compress-commons-2.1.1.tgz#9410d9a534cf8435e3fbbb7c6ce48de2dc2f0610"
   dependencies:
-    buffer-crc32 "^0.2.1"
-    crc32-stream "^2.0.0"
-    normalize-path "^2.0.0"
-    readable-stream "^2.0.0"
+    buffer-crc32 "^0.2.13"
+    crc32-stream "^3.0.1"
+    normalize-path "^3.0.0"
+    readable-stream "^2.3.6"
 
 concat-map@0.0.1:
   version "0.0.1"
@@ -464,12 +466,12 @@ core-util-is@1.0.2, core-util-is@~1.0.0:
   version "1.0.2"
   resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7"
 
-crc32-stream@^2.0.0:
-  version "2.0.0"
-  resolved "https://registry.yarnpkg.com/crc32-stream/-/crc32-stream-2.0.0.tgz#e3cdd3b4df3168dd74e3de3fbbcb7b297fe908f4"
+crc32-stream@^3.0.1:
+  version "3.0.1"
+  resolved "https://registry.yarnpkg.com/crc32-stream/-/crc32-stream-3.0.1.tgz#cae6eeed003b0e44d739d279de5ae63b171b4e85"
   dependencies:
     crc "^3.4.4"
-    readable-stream "^2.0.0"
+    readable-stream "^3.4.0"
 
 crc@^3.4.4:
   version "3.5.0"
@@ -586,9 +588,9 @@ des.js@^1.0.0:
     inherits "^2.0.1"
     minimalistic-assert "^1.0.0"
 
-diff@^3.1.0:
-  version "3.4.0"
-  resolved "https://registry.yarnpkg.com/diff/-/diff-3.4.0.tgz#b1d85507daf3964828de54b37d0d73ba67dda56c"
+diff@^4.0.1:
+  version "4.0.2"
+  resolved "https://registry.yarnpkg.com/diff/-/diff-4.0.2.tgz#60f3aecb89d5fae520c11aa19efc2bb982aade7d"
 
 diffie-hellman@^5.0.0:
   version "5.0.2"
@@ -624,9 +626,9 @@ emojis-list@^2.0.0:
   version "2.1.0"
   resolved "https://registry.yarnpkg.com/emojis-list/-/emojis-list-2.1.0.tgz#4daa4d9db00f9819880c79fa457ae5b09a1fd389"
 
-end-of-stream@^1.0.0:
-  version "1.4.0"
-  resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.0.tgz#7a90d833efda6cfa6eac0f4949dbb0fad3a63206"
+end-of-stream@^1.4.1:
+  version "1.4.4"
+  resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.4.tgz#5ae64a5f45057baf3626ec14da0ca5e4b2431eb0"
   dependencies:
     once "^1.4.0"
 
@@ -703,10 +705,6 @@ es6-weak-map@^2.0.1:
     es6-iterator "^2.0.1"
     es6-symbol "^3.1.1"
 
-escape-string-regexp@^1.0.5:
-  version "1.0.5"
-  resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4"
-
 escope@^3.6.0:
   version "3.6.0"
   resolved "https://registry.yarnpkg.com/escope/-/escope-3.6.0.tgz#e01975e812781a163a6dadfdd80398dc64c889c3"
@@ -848,11 +846,15 @@ form-data@~2.3.1:
     combined-stream "^1.0.5"
     mime-types "^2.1.12"
 
-fs-extra@^4.0.2:
-  version "4.0.2"
-  resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-4.0.2.tgz#f91704c53d1b461f893452b0c307d9997647ab6b"
+fs-constants@^1.0.0:
+  version "1.0.0"
+  resolved "https://registry.yarnpkg.com/fs-constants/-/fs-constants-1.0.0.tgz#6be0de9be998ce16af8afc24497b9ee9b7ccd9ad"
+
+fs-extra@^8.1.0:
+  version "8.1.0"
+  resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-8.1.0.tgz#49d43c45a88cd9677668cb7be1b46efdb8d2e1c0"
   dependencies:
-    graceful-fs "^4.1.2"
+    graceful-fs "^4.2.0"
     jsonfile "^4.0.0"
     universalify "^0.1.0"
 
@@ -924,7 +926,7 @@ glob-parent@^2.0.0:
   dependencies:
     is-glob "^2.0.0"
 
-glob@^7.0.0, glob@^7.0.5, glob@^7.1.2:
+glob@^7.0.5:
   version "7.1.2"
   resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.2.tgz#c19c9df9a028702d678612384a6552404c636d15"
   dependencies:
@@ -935,10 +937,25 @@ glob@^7.0.0, glob@^7.0.5, glob@^7.1.2:
     once "^1.3.0"
     path-is-absolute "^1.0.0"
 
-graceful-fs@^4.1.0, graceful-fs@^4.1.2, graceful-fs@^4.1.6:
+glob@^7.1.4:
+  version "7.1.6"
+  resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.6.tgz#141f33b81a7c2492e125594307480c46679278a6"
+  dependencies:
+    fs.realpath "^1.0.0"
+    inflight "^1.0.4"
+    inherits "2"
+    minimatch "^3.0.4"
+    once "^1.3.0"
+    path-is-absolute "^1.0.0"
+
+graceful-fs@^4.1.2, graceful-fs@^4.1.6:
   version "4.1.11"
   resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.1.11.tgz#0e8bdfe4d1ddb8854d64e04ea7c00e2a026e5658"
 
+graceful-fs@^4.2.0:
+  version "4.2.4"
+  resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.4.tgz#2256bde14d3632958c465ebc96dc467ca07a29fb"
+
 har-schema@^1.0.5:
   version "1.0.5"
   resolved "https://registry.yarnpkg.com/har-schema/-/har-schema-1.0.5.tgz#d263135f43307c02c602afc8fe95970c0151369e"
@@ -1023,12 +1040,6 @@ hoek@4.x.x:
   version "4.2.0"
   resolved "https://registry.yarnpkg.com/hoek/-/hoek-4.2.0.tgz#72d9d0754f7fe25ca2d01ad8f8f9a9449a89526d"
 
-homedir-polyfill@^1.0.1:
-  version "1.0.1"
-  resolved "https://registry.yarnpkg.com/homedir-polyfill/-/homedir-polyfill-1.0.1.tgz#4c2bbc8a758998feebf5ed68580f76d46768b4bc"
-  dependencies:
-    parse-passwd "^1.0.0"
-
 hosted-git-info@^2.1.4:
   version "2.5.0"
   resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.5.0.tgz#6d60e34b3abbc8313062c3b798ef8d901a07af3c"
@@ -1076,6 +1087,10 @@ inherits@2.0.1:
   version "2.0.1"
   resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.1.tgz#b17d08d326b4423e568eff719f91b0b1cbdf69f1"
 
+inherits@^2.0.4:
+  version "2.0.4"
+  resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c"
+
 ini@~1.3.0:
   version "1.3.4"
   resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.4.tgz#0537cb79daf59b59a1a517dff706c86ec039162e"
@@ -1108,6 +1123,12 @@ is-builtin-module@^1.0.0:
   dependencies:
     builtin-modules "^1.0.0"
 
+is-builtin-module@^3.0.0:
+  version "3.0.0"
+  resolved "https://registry.yarnpkg.com/is-builtin-module/-/is-builtin-module-3.0.0.tgz#137d3d2425023a19a660fb9dd6ddfabe52c03466"
+  dependencies:
+    builtin-modules "^3.0.0"
+
 is-dotfile@^1.0.0:
   version "1.0.3"
   resolved "https://registry.yarnpkg.com/is-dotfile/-/is-dotfile-1.0.3.tgz#a6a2f32ffd2dfb04f5ca25ecd0f6b83cf798a1e1"
@@ -1297,9 +1318,29 @@ locate-path@^2.0.0:
     p-locate "^2.0.0"
     path-exists "^3.0.0"
 
-lodash@^4.0.0, lodash@^4.14.0, lodash@^4.17.4, lodash@^4.8.0:
-  version "4.17.4"
-  resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.4.tgz#78203a4d1c328ae1d86dca6460e369b57f4055ae"
+lodash.defaults@^4.2.0:
+  version "4.2.0"
+  resolved "https://registry.yarnpkg.com/lodash.defaults/-/lodash.defaults-4.2.0.tgz#d09178716ffea4dde9e5fb7b37f6f0802274580c"
+
+lodash.difference@^4.5.0:
+  version "4.5.0"
+  resolved "https://registry.yarnpkg.com/lodash.difference/-/lodash.difference-4.5.0.tgz#9ccb4e505d486b91651345772885a2df27fd017c"
+
+lodash.flatten@^4.4.0:
+  version "4.4.0"
+  resolved "https://registry.yarnpkg.com/lodash.flatten/-/lodash.flatten-4.4.0.tgz#f31c22225a9632d2bbf8e4addbef240aa765a61f"
+
+lodash.isplainobject@^4.0.6:
+  version "4.0.6"
+  resolved "https://registry.yarnpkg.com/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz#7c526a52d89b45c45cc690b88163be0497f550cb"
+
+lodash.union@^4.6.0:
+  version "4.6.0"
+  resolved "https://registry.yarnpkg.com/lodash.union/-/lodash.union-4.6.0.tgz#48bb5088409f16f1821666641c44dd1aaae3cd88"
+
+lodash@^4.0.0, lodash@^4.14.0, lodash@^4.17.14, lodash@^4.17.15:
+  version "4.17.19"
+  resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.19.tgz#e48ddedbe30b3321783c5b4301fbd353bc1e4a4b"
 
 longest@^1.0.1:
   version "1.0.1"
@@ -1476,6 +1517,10 @@ normalize-path@^2.0.0, normalize-path@^2.0.1:
   dependencies:
     remove-trailing-separator "^1.0.1"
 
+normalize-path@^3.0.0:
+  version "3.0.0"
+  resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65"
+
 npm-run-path@^2.0.0:
   version "2.0.2"
   resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-2.0.2.tgz#35a9232dfa35d7067b4cb2ddf2357b1871536c5f"
@@ -1586,10 +1631,6 @@ parse-json@^2.2.0:
   dependencies:
     error-ex "^1.2.0"
 
-parse-passwd@^1.0.0:
-  version "1.0.0"
-  resolved "https://registry.yarnpkg.com/parse-passwd/-/parse-passwd-1.0.0.tgz#6d5b934a456993b23d37f40a382d6f1666a8e5c6"
-
 path-browserify@0.0.0:
   version "0.0.0"
   resolved "https://registry.yarnpkg.com/path-browserify/-/path-browserify-0.0.0.tgz#a0b870729aae214005b7d5032ec2cbbb0fb4451a"
@@ -1642,6 +1683,10 @@ process-nextick-args@~1.0.6:
   version "1.0.7"
   resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-1.0.7.tgz#150e20b756590ad3f91093f25a4f2ad8bff30ba3"
 
+process-nextick-args@~2.0.0:
+  version "2.0.1"
+  resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2"
+
 process@^0.11.0:
   version "0.11.10"
   resolved "https://registry.yarnpkg.com/process/-/process-0.11.10.tgz#7332300e840161bda3e69a1d1d91a7d4bc16f182"
@@ -1741,6 +1786,26 @@ readable-stream@^2.0.0, readable-stream@^2.0.1, readable-stream@^2.0.2, readable
     string_decoder "~1.0.3"
     util-deprecate "~1.0.1"
 
+readable-stream@^2.3.6:
+  version "2.3.7"
+  resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.7.tgz#1eca1cf711aef814c04f62252a36a62f6cb23b57"
+  dependencies:
+    core-util-is "~1.0.0"
+    inherits "~2.0.3"
+    isarray "~1.0.0"
+    process-nextick-args "~2.0.0"
+    safe-buffer "~5.1.1"
+    string_decoder "~1.1.1"
+    util-deprecate "~1.0.1"
+
+readable-stream@^3.1.1, readable-stream@^3.4.0:
+  version "3.6.0"
+  resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.0.tgz#337bbda3adc0706bd3e024426a286d4b4b2c9198"
+  dependencies:
+    inherits "^2.0.3"
+    string_decoder "^1.1.1"
+    util-deprecate "^1.0.1"
+
 readdirp@^2.0.0:
   version "2.1.0"
   resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-2.1.0.tgz#4ed0ad060df3073300c48440373f72d1cc642d78"
@@ -1853,6 +1918,10 @@ safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.1, safe-buffer@~5.1.0,
   version "5.1.1"
   resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.1.tgz#893312af69b2123def71f57889001671eeb2c853"
 
+safe-buffer@~5.2.0:
+  version "5.2.1"
+  resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6"
+
 sax@1.2.1:
   version "1.2.1"
   resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.1.tgz#7b8e656190b228e81a66aea748480d828cd2d37a"
@@ -1861,21 +1930,25 @@ sax@>=0.6.0:
   version "1.2.4"
   resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9"
 
-"semver@2 || 3 || 4 || 5", semver@^5.3.0, semver@^5.4.1:
+"semver@2 || 3 || 4 || 5", semver@^5.3.0:
   version "5.4.1"
   resolved "https://registry.yarnpkg.com/semver/-/semver-5.4.1.tgz#e059c09d8571f0540823733433505d3a2f00b18e"
 
+semver@^6.2.0:
+  version "6.3.0"
+  resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d"
+
 "serverless-webpack@file:../..":
-  version "3.1.2"
+  version "5.3.2"
   dependencies:
-    archiver "^2.0.0"
-    bluebird "^3.5.0"
-    fs-extra "^4.0.2"
-    glob "^7.1.2"
-    is-builtin-module "^1.0.0"
-    lodash "^4.17.4"
-    semver "^5.4.1"
-    ts-node "^3.2.0"
+    archiver "^3.0.3"
+    bluebird "^3.5.5"
+    fs-extra "^8.1.0"
+    glob "^7.1.4"
+    is-builtin-module "^3.0.0"
+    lodash "^4.17.15"
+    semver "^6.2.0"
+    ts-node "^8.3.0"
 
 set-blocking@^2.0.0, set-blocking@~2.0.0:
   version "2.0.0"
@@ -1926,16 +1999,21 @@ source-list-map@^2.0.0:
   version "2.0.0"
   resolved "https://registry.yarnpkg.com/source-list-map/-/source-list-map-2.0.0.tgz#aaa47403f7b245a92fbc97ea08f250d6087ed085"
 
-source-map-support@^0.4.0:
-  version "0.4.18"
-  resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.4.18.tgz#0286a6de8be42641338594e97ccea75f0a2c585f"
+source-map-support@^0.5.17:
+  version "0.5.19"
+  resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.19.tgz#a98b62f86dcaf4f67399648c085291ab9e8fed61"
   dependencies:
-    source-map "^0.5.6"
+    buffer-from "^1.0.0"
+    source-map "^0.6.0"
 
 source-map@^0.5.3, source-map@^0.5.6, source-map@~0.5.1, source-map@~0.5.3:
   version "0.5.7"
   resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc"
 
+source-map@^0.6.0:
+  version "0.6.1"
+  resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263"
+
 spdx-correct@~1.0.0:
   version "1.0.2"
   resolved "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-1.0.2.tgz#4b3073d933ff51f3912f03ac5519498a4150db40"
@@ -2000,12 +2078,24 @@ string_decoder@^0.10.25:
   version "0.10.31"
   resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-0.10.31.tgz#62e203bc41766c6c28c9fc84301dab1c5310fa94"
 
+string_decoder@^1.1.1:
+  version "1.3.0"
+  resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.3.0.tgz#42f114594a46cf1a8e30b0a84f56c78c3edac21e"
+  dependencies:
+    safe-buffer "~5.2.0"
+
 string_decoder@~1.0.3:
   version "1.0.3"
   resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.0.3.tgz#0fc67d7c141825de94282dd536bec6b9bce860ab"
   dependencies:
     safe-buffer "~5.1.0"
 
+string_decoder@~1.1.1:
+  version "1.1.1"
+  resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8"
+  dependencies:
+    safe-buffer "~5.1.0"
+
 stringstream@~0.0.4, stringstream@~0.0.5:
   version "0.0.5"
   resolved "https://registry.yarnpkg.com/stringstream/-/stringstream-0.0.5.tgz#4e484cd4de5a0bbbee18e46307710a8a81621878"
@@ -2030,11 +2120,11 @@ strip-eof@^1.0.0:
   version "1.0.0"
   resolved "https://registry.yarnpkg.com/strip-eof/-/strip-eof-1.0.0.tgz#bb43ff5598a6eb05d89b59fcd129c983313606bf"
 
-strip-json-comments@^2.0.0, strip-json-comments@~2.0.1:
+strip-json-comments@~2.0.1:
   version "2.0.1"
   resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a"
 
-supports-color@^4.0.0, supports-color@^4.2.1:
+supports-color@^4.2.1:
   version "4.5.0"
   resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-4.5.0.tgz#be7a0de484dec5c5cddf8b3d59125044912f635b"
   dependencies:
@@ -2057,14 +2147,15 @@ tar-pack@^3.4.0:
     tar "^2.2.1"
     uid-number "^0.0.6"
 
-tar-stream@^1.5.0:
-  version "1.5.4"
-  resolved "https://registry.yarnpkg.com/tar-stream/-/tar-stream-1.5.4.tgz#36549cf04ed1aee9b2a30c0143252238daf94016"
+tar-stream@^2.1.0:
+  version "2.1.3"
+  resolved "https://registry.yarnpkg.com/tar-stream/-/tar-stream-2.1.3.tgz#1e2022559221b7866161660f118255e20fa79e41"
   dependencies:
-    bl "^1.0.0"
-    end-of-stream "^1.0.0"
-    readable-stream "^2.0.0"
-    xtend "^4.0.0"
+    bl "^4.0.1"
+    end-of-stream "^1.4.1"
+    fs-constants "^1.0.0"
+    inherits "^2.0.3"
+    readable-stream "^3.1.1"
 
 tar@^2.2.1:
   version "2.2.1"
@@ -2090,27 +2181,15 @@ tough-cookie@~2.3.0, tough-cookie@~2.3.3:
   dependencies:
     punycode "^1.4.1"
 
-ts-node@^3.2.0:
-  version "3.3.0"
-  resolved "https://registry.yarnpkg.com/ts-node/-/ts-node-3.3.0.tgz#c13c6a3024e30be1180dd53038fc209289d4bf69"
+ts-node@^8.3.0:
+  version "8.10.2"
+  resolved "https://registry.yarnpkg.com/ts-node/-/ts-node-8.10.2.tgz#eee03764633b1234ddd37f8db9ec10b75ec7fb8d"
   dependencies:
-    arrify "^1.0.0"
-    chalk "^2.0.0"
-    diff "^3.1.0"
+    arg "^4.1.0"
+    diff "^4.0.1"
     make-error "^1.1.1"
-    minimist "^1.2.0"
-    mkdirp "^0.5.1"
-    source-map-support "^0.4.0"
-    tsconfig "^6.0.0"
-    v8flags "^3.0.0"
-    yn "^2.0.0"
-
-tsconfig@^6.0.0:
-  version "6.0.0"
-  resolved "https://registry.yarnpkg.com/tsconfig/-/tsconfig-6.0.0.tgz#6b0e8376003d7af1864f8df8f89dd0059ffcd032"
-  dependencies:
-    strip-bom "^3.0.0"
-    strip-json-comments "^2.0.0"
+    source-map-support "^0.5.17"
+    yn "3.1.1"
 
 tty-browserify@0.0.0:
   version "0.0.0"
@@ -2169,7 +2248,7 @@ url@^0.11.0:
     punycode "1.3.2"
     querystring "0.2.0"
 
-util-deprecate@~1.0.1:
+util-deprecate@^1.0.1, util-deprecate@~1.0.1:
   version "1.0.2"
   resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf"
 
@@ -2183,12 +2262,6 @@ uuid@3.1.0, uuid@^3.0.0, uuid@^3.1.0:
   version "3.1.0"
   resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.1.0.tgz#3dd3d3e790abc24d7b0d3a034ffababe28ebbc04"
 
-v8flags@^3.0.0:
-  version "3.0.1"
-  resolved "https://registry.yarnpkg.com/v8flags/-/v8flags-3.0.1.tgz#dce8fc379c17d9f2c9e9ed78d89ce00052b1b76b"
-  dependencies:
-    homedir-polyfill "^1.0.1"
-
 validate-npm-package-license@^3.0.1:
   version "3.0.1"
   resolved "https://registry.yarnpkg.com/validate-npm-package-license/-/validate-npm-package-license-3.0.1.tgz#2804babe712ad3379459acfbe24746ab2c303fbc"
@@ -2349,15 +2422,14 @@ yargs@~3.10.0:
     decamelize "^1.0.0"
     window-size "0.1.0"
 
-yn@^2.0.0:
-  version "2.0.0"
-  resolved "https://registry.yarnpkg.com/yn/-/yn-2.0.0.tgz#e5adabc8acf408f6385fc76495684c88e6af689a"
+yn@3.1.1:
+  version "3.1.1"
+  resolved "https://registry.yarnpkg.com/yn/-/yn-3.1.1.tgz#1e87401a09d767c1d5eab26a6e4c185182d2eb50"
 
-zip-stream@^1.2.0:
-  version "1.2.0"
-  resolved "https://registry.yarnpkg.com/zip-stream/-/zip-stream-1.2.0.tgz#a8bc45f4c1b49699c6b90198baacaacdbcd4ba04"
+zip-stream@^2.1.2:
+  version "2.1.3"
+  resolved "https://registry.yarnpkg.com/zip-stream/-/zip-stream-2.1.3.tgz#26cc4bdb93641a8590dd07112e1f77af1758865b"
   dependencies:
-    archiver-utils "^1.3.0"
-    compress-commons "^1.2.0"
-    lodash "^4.8.0"
-    readable-stream "^2.0.0"
+    archiver-utils "^2.1.0"
+    compress-commons "^2.1.1"
+    readable-stream "^3.4.0"
diff --git a/lib/packExternalModules.js b/lib/packExternalModules.js
index ac7b091..3e787a8 100644
--- a/lib/packExternalModules.js
+++ b/lib/packExternalModules.js
@@ -94,32 +94,14 @@ function getProdModules(externalModules, packagePath, dependencyGraph, forceExcl
         const peerDependencies = require(modulePackagePath).peerDependencies;
         if (!_.isEmpty(peerDependencies)) {
           this.options.verbose && this.serverless.cli.log(`Adding explicit peers for dependency ${module.external}`);
-
-          const peerDependenciesMeta = require(modulePackagePath).peerDependenciesMeta;
-
-          if (!_.isEmpty(peerDependenciesMeta)) {
-            _.forEach(peerDependencies, (value, key) => {
-              if (peerDependenciesMeta[key] && peerDependenciesMeta[key].optional === true) {
-                this.options.verbose &&
-                  this.serverless.cli.log(
-                    `Skipping peers dependency ${key} for dependency ${module.external} because it's optional`
-                  );
-
-                _.unset(peerDependencies, key);
-              }
-            });
-          }
-
-          if (!_.isEmpty(peerDependencies)) {
-            const peerModules = getProdModules.call(
-              this,
-              _.map(peerDependencies, (value, key) => ({ external: key })),
-              packagePath,
-              dependencyGraph,
-              forceExcludes
-            );
-            Array.prototype.push.apply(prodModules, peerModules);
-          }
+          const peerModules = getProdModules.call(
+            this,
+            _.map(peerDependencies, (value, key) => ({ external: key })),
+            packagePath,
+            dependencyGraph,
+            forceExcludes
+          );
+          Array.prototype.push.apply(prodModules, peerModules);
         }
       } catch (e) {
         this.serverless.cli.log(`WARNING: Could not check for peer dependencies of ${module.external}`);
@@ -442,4 +424,3 @@ module.exports = {
     });
   }
 };
-
diff --git a/lib/packagers/yarn.js b/lib/packagers/yarn.js
index d1dcd74..4b3721b 100644
--- a/lib/packagers/yarn.js
+++ b/lib/packagers/yarn.js
@@ -62,13 +62,7 @@ class Yarn {
         return BbPromise.reject(err);
       })
       .then(processOutput => processOutput.stdout)
-      .then(stdout =>
-        BbPromise.try(() => {
-          const lines = Utils.splitLines(stdout);
-          const parsedLines = _.map(lines, Utils.safeJsonParse);
-          return _.find(parsedLines, line => line && line.type === 'tree');
-        })
-      )
+      .then(depJson => BbPromise.try(() => JSON.parse(depJson)))
       .then(parsedTree => {
         const convertTrees = trees =>
           _.reduce(
diff --git a/lib/utils.js b/lib/utils.js
index 5bb12ff..7609265 100644
--- a/lib/utils.js
+++ b/lib/utils.js
@@ -96,24 +96,10 @@ function spawnProcess(command, args, options) {
   });
 }
 
-function safeJsonParse(str) {
-  try {
-    return JSON.parse(str);
-  } catch (e) {
-    return null;
-  }
-}
-
-function splitLines(str) {
-  return _.split(str, /\r?\n/);
-}
-
 module.exports = {
   guid,
   purgeCache,
   searchAndProcessCache,
   SpawnError,
-  spawnProcess,
-  safeJsonParse,
-  splitLines
+  spawnProcess
 };
diff --git a/lib/validate.js b/lib/validate.js
index fcef521..b26bce3 100644
--- a/lib/validate.js
+++ b/lib/validate.js
@@ -96,12 +96,8 @@ module.exports = {
       _.merge(entries, entry);
     } else {
       _.forEach(functions, (func, index) => {
-        const loadedFunc = this.serverless.service.getFunction(func);
-        const runtime = loadedFunc.runtime || this.serverless.service.provider.runtime;
-        if (runtime.match(/^node/)) {
-          const entry = getEntryForFunction.call(this, functions[index], loadedFunc);
-          _.merge(entries, entry);
-        }
+        const entry = getEntryForFunction.call(this, functions[index], this.serverless.service.getFunction(func));
+        _.merge(entries, entry);
       });
     }
 
@@ -149,11 +145,6 @@ module.exports = {
           filename: '[name].js'
         };
       }
-      
-      // Default node
-      if (!this.webpackConfig.node || _.isEmpty(this.webpackConfig.node)) {
-        this.webpackConfig.node = false;
-      }
 
       // Custom output path
       if (this.options.out) {
diff --git a/package-lock.json b/package-lock.json
index adb55c0..0e15660 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -4759,9 +4759,9 @@
       }
     },
     "lodash": {
-      "version": "4.17.19",
-      "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.19.tgz",
-      "integrity": "sha512-JNvd8XER9GQX0v2qJgsaN/mzFCNA5BRe/j8JN9d+tWyGLSodKQHKFicdwNYzWwI3wjRnaKPsGj1XkBjx/F96DQ=="
+      "version": "4.17.15",
+      "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz",
+      "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A=="
     },
     "lodash.defaults": {
       "version": "4.2.0",
diff --git a/package.json b/package.json
index 266672f..e2faea3 100644
--- a/package.json
+++ b/package.json
@@ -53,7 +53,7 @@
     "fs-extra": "^8.1.0",
     "glob": "^7.1.4",
     "is-builtin-module": "^3.0.0",
-    "lodash": "^4.17.19",
+    "lodash": "^4.17.15",
     "semver": "^6.2.0",
     "ts-node": "^8.3.0"
   },


Test patch:
diff --git a/lib/packagers/yarn.test.js b/lib/packagers/yarn.test.js
index 52445ad..0e58d46 100644
--- a/lib/packagers/yarn.test.js
+++ b/lib/packagers/yarn.test.js
@@ -61,22 +61,14 @@ describe('yarn', () => {
     });
 
     it('should transform yarn trees to npm dependencies', () => {
-      const testYarnResult =
-        '{"type":"activityStart","data":{"id":0}}\n' +
-        '{"type":"activityTick","data":{"id":0,"name":"archiver@^2.1.1"}}\n' +
-        '{"type":"activityTick","data":{"id":0,"name":"bluebird@^3.5.1"}}\n' +
-        '{"type":"activityTick","data":{"id":0,"name":"fs-extra@^4.0.3"}}\n' +
-        '{"type":"activityTick","data":{"id":0,"name":"mkdirp@^0.5.1"}}\n' +
-        '{"type":"activityTick","data":{"id":0,"name":"minimist@^0.0.8"}}\n' +
-        '{"type":"activityTick","data":{"id":0,"name":"@sls/webpack@^1.0.0"}}\n' +
-        '{"type":"tree","data":{"type":"list","trees":[' +
-        '{"name":"archiver@2.1.1","children":[],"hint":null,"color":"bold",' +
-        '"depth":0},{"name":"bluebird@3.5.1","children":[],"hint":null,"color":' +
-        '"bold","depth":0},{"name":"fs-extra@4.0.3","children":[],"hint":null,' +
-        '"color":"bold","depth":0},{"name":"mkdirp@0.5.1","children":[{"name":' +
-        '"minimist@0.0.8","children":[],"hint":null,"color":"bold","depth":0}],' +
-        '"hint":null,"color":null,"depth":0},{"name":"@sls/webpack@1.0.0",' +
-        '"children":[],"hint":null,"color":"bold","depth":0}]}}\n';
+      const testYarnResult = `{"type":"tree","data":{"type":"list","trees":[
+        {"name":"archiver@2.1.1","children":[],"hint":null,"color":"bold",
+        "depth":0},{"name":"bluebird@3.5.1","children":[],"hint":null,"color":
+        "bold","depth":0},{"name":"fs-extra@4.0.3","children":[],"hint":null,
+        "color":"bold","depth":0},{"name":"mkdirp@0.5.1","children":[{"name":
+        "minimist@0.0.8","children":[],"hint":null,"color":"bold","depth":0}],
+        "hint":null,"color":null,"depth":0},{"name":"@sls/webpack@1.0.0", 
+        "children":[],"hint":null,"color":"bold","depth":0}]}}`;
       const expectedResult = {
         problems: [],
         dependencies: {
diff --git a/lib/utils.test.js b/lib/utils.test.js
index 5d75167..a0a6479 100644
--- a/lib/utils.test.js
+++ b/lib/utils.test.js
@@ -118,20 +118,4 @@ describe('Utils', () => {
       return expect(Utils.spawnProcess('cmd', [])).to.be.rejectedWith(Utils.SpawnError);
     });
   });
-
-  describe('safeJsonParse', () => {
-    it('should parse valid JSON', () => {
-      expect(Utils.safeJsonParse('{"foo": "bar"}')).to.deep.equal({ foo: 'bar' });
-    });
-
-    it('should return null for invalid JSON', () => {
-      expect(Utils.safeJsonParse('{"foo":')).to.equal(null);
-    });
-  });
-
-  describe('splitLines', () => {
-    it('should split on new line characters', () => {
-      expect(Utils.splitLines('a\r\nb\nc')).to.deep.equal([ 'a', 'b', 'c' ]);
-    });
-  });
 });
diff --git a/tests/data/rp-package-optional.json b/tests/data/rp-package-optional.json
deleted file mode 100644
index f193d5c..0000000
--- a/tests/data/rp-package-optional.json
+++ /dev/null
@@ -1,94 +0,0 @@
-{
-  "_from": "request-promise",
-  "_id": "request-promise@4.2.1",
-  "_inBundle": false,
-  "_integrity": "sha1-fuxWyJMXqCLL/qmbA5zlQ8LhX2c=",
-  "_location": "/request-promise",
-  "_phantomChildren": {},
-  "_requested": {
-    "type": "tag",
-    "registry": true,
-    "raw": "request-promise",
-    "name": "request-promise",
-    "escapedName": "request-promise",
-    "rawSpec": "",
-    "saveSpec": null,
-    "fetchSpec": "latest"
-  },
-  "_requiredBy": [
-    "#USER",
-    "/"
-  ],
-  "_resolved": "https://registry.npmjs.org/request-promise/-/request-promise-4.2.1.tgz",
-  "_shasum": "7eec56c89317a822cbfea99b039ce543c2e15f67",
-  "_spec": "request-promise",
-  "_where": "C:\\Projects\\serverless\\test\\babel-dynamically-entries",
-  "author": {
-    "name": "Nicolai Kamenzky",
-    "url": "https://github.com/analog-nico"
-  },
-  "bugs": {
-    "url": "https://github.com/request/request-promise/issues"
-  },
-  "bundleDependencies": false,
-  "dependencies": {
-    "bluebird": "^3.5.0",
-    "request-promise-core": "1.1.1",
-    "stealthy-require": "^1.1.0",
-    "tough-cookie": ">=2.3.0"
-  },
-  "deprecated": false,
-  "description": "The simplified HTTP request client 'request' with Promise support. Powered by Bluebird.",
-  "devDependencies": {
-    "body-parser": "~1.15.2",
-    "chai": "~3.5.0",
-    "chalk": "~1.1.3",
-    "gulp": "~3.9.1",
-    "gulp-coveralls": "~0.1.4",
-    "gulp-eslint": "~2.1.0",
-    "gulp-istanbul": "~1.0.0",
-    "gulp-mocha": "~2.2.0",
-    "lodash": "~4.13.1",
-    "publish-please": "~2.1.4",
-    "request": "^2.34.0",
-    "rimraf": "~2.5.3",
-    "run-sequence": "~1.2.2"
-  },
-  "engines": {
-    "node": ">=0.10.0"
-  },
-  "homepage": "https://github.com/request/request-promise#readme",
-  "keywords": [
-    "xhr",
-    "http",
-    "https",
-    "promise",
-    "request",
-    "then",
-    "thenable",
-    "bluebird"
-  ],
-  "license": "ISC",
-  "main": "./lib/rp.js",
-  "name": "request-promise",
-  "peerDependencies": {
-    "request": "^2.34",
-    "canvas": "^2.5.0"
-  },
-  "peerDependenciesMeta": {
-    "canvas": {
-      "optional": true
-    }
-  },
-  "repository": {
-    "type": "git",
-    "url": "git+https://github.com/request/request-promise.git"
-  },
-  "scripts": {
-    "prepublish": "publish-please guard",
-    "publish-please": "publish-please",
-    "test": "gulp ci",
-    "test-publish": "gulp ci-no-cov"
-  },
-  "version": "4.2.1"
-}
diff --git a/tests/packExternalModules.test.js b/tests/packExternalModules.test.js
index b1abd43..2fb9a88 100644
--- a/tests/packExternalModules.test.js
+++ b/tests/packExternalModules.test.js
@@ -1114,222 +1114,107 @@ describe('packExternalModules', () => {
     });
 
     describe('peer dependencies', () => {
-      /**
-       * Both "default" & "optinal" behaviors are mostly equal.
-       * The only difference between each scenario is they don't use the same package.json as mock
-       */
-      describe('default behavior', () => {
-        before(() => {
-          const peerDepPackageJson = require('./data/package-peerdeps.json');
-          mockery.deregisterMock(path.join(process.cwd(), 'package.json'));
-          mockery.registerMock(path.join(process.cwd(), 'package.json'), peerDepPackageJson);
-          // Mock request-promise package.json
-          const rpPackageJson = require('./data/rp-package.json');
-          const rpPackagePath = path.join(process.cwd(), 'node_modules', 'request-promise', 'package.json');
-          mockery.registerMock(rpPackagePath, rpPackageJson);
-        });
-
-        after(() => {
-          mockery.deregisterMock(path.join(process.cwd(), 'package.json'));
-          mockery.registerMock(path.join(process.cwd(), 'package.json'), packageMock);
-          const rpPackagePath = path.join(process.cwd(), 'node_modules', 'request-promise', 'package.json');
-          mockery.deregisterMock(rpPackagePath);
-        });
-
-        it('should install external peer dependencies', () => {
-          const expectedCompositePackageJSON = {
-            name: 'test-service',
-            version: '1.0.0',
-            description: 'Packaged externals for test-service',
-            private: true,
-            scripts: {},
-            dependencies: {
-              bluebird: '^3.5.0',
-              'request-promise': '^4.2.1',
-              request: '^2.82.0'
-            }
-          };
-          const expectedPackageJSON = {
-            name: 'test-service',
-            version: '1.0.0',
-            description: 'Packaged externals for test-service',
-            private: true,
-            scripts: {},
-            dependencies: {
-              bluebird: '^3.5.0',
-              'request-promise': '^4.2.1',
-              request: '^2.82.0'
-            }
-          };
-
-          const dependencyGraph = require('./data/npm-ls-peerdeps.json');
-          const peerDepStats = {
-            stats: [
-              {
-                compilation: {
-                  chunks: [
-                    new ChunkMock([
-                      {
-                        identifier: _.constant('"crypto"')
-                      },
-                      {
-                        identifier: _.constant('"uuid/v4"')
-                      },
-                      {
-                        identifier: _.constant('"mockery"')
-                      },
-                      {
-                        identifier: _.constant('"@scoped/vendor/module1"')
-                      },
-                      {
-                        identifier: _.constant('external "bluebird"')
-                      },
-                      {
-                        identifier: _.constant('external "request-promise"')
-                      }
-                    ])
-                  ],
-                  compiler: {
-                    outputPath: '/my/Service/Path/.webpack/service'
-                  }
-                }
-              }
-            ]
-          };
-
-          module.webpackOutputPath = 'outputPath';
-          fsExtraMock.pathExists.yields(null, false);
-          fsExtraMock.copy.yields();
-          packagerMock.getProdDependencies.returns(BbPromise.resolve(dependencyGraph));
-          packagerMock.install.returns(BbPromise.resolve());
-          packagerMock.prune.returns(BbPromise.resolve());
-          packagerMock.runScripts.returns(BbPromise.resolve());
-          module.compileStats = peerDepStats;
-          return expect(module.packExternalModules()).to.be.fulfilled.then(() =>
-            BbPromise.all([
-              // The module package JSON and the composite one should have been stored
-              expect(writeFileSyncStub).to.have.been.calledTwice,
-              expect(writeFileSyncStub.firstCall.args[1]).to.equal(
-                JSON.stringify(expectedCompositePackageJSON, null, 2)
-              ),
-              expect(writeFileSyncStub.secondCall.args[1]).to.equal(JSON.stringify(expectedPackageJSON, null, 2)),
-              // The modules should have been copied
-              expect(fsExtraMock.copy).to.have.been.calledOnce,
-              // npm ls and npm prune should have been called
-              expect(packagerMock.getProdDependencies).to.have.been.calledOnce,
-              expect(packagerMock.install).to.have.been.calledOnce,
-              expect(packagerMock.prune).to.have.been.calledOnce,
-              expect(packagerMock.runScripts).to.have.been.calledOnce
-            ])
-          );
-        });
+      before(() => {
+        const peerDepPackageJson = require('./data/package-peerdeps.json');
+        mockery.deregisterMock(path.join(process.cwd(), 'package.json'));
+        mockery.registerMock(path.join(process.cwd(), 'package.json'), peerDepPackageJson);
+        // Mock request-promise package.json
+        const rpPackageJson = require('./data/rp-package.json');
+        const rpPackagePath = path.join(process.cwd(), 'node_modules', 'request-promise', 'package.json');
+        mockery.registerMock(rpPackagePath, rpPackageJson);
       });
 
-      describe('optional behavior', () => {
-        before(() => {
-          const peerDepPackageJson = require('./data/package-peerdeps.json');
-          mockery.deregisterMock(path.join(process.cwd(), 'package.json'));
-          mockery.registerMock(path.join(process.cwd(), 'package.json'), peerDepPackageJson);
-          // Mock request-promise package.json
-          const rpPackageJson = require('./data/rp-package-optional.json');
-          const rpPackagePath = path.join(process.cwd(), 'node_modules', 'request-promise', 'package.json');
-          mockery.registerMock(rpPackagePath, rpPackageJson);
-        });
-
-        after(() => {
-          mockery.deregisterMock(path.join(process.cwd(), 'package.json'));
-          mockery.registerMock(path.join(process.cwd(), 'package.json'), packageMock);
-          const rpPackagePath = path.join(process.cwd(), 'node_modules', 'request-promise', 'package.json');
-          mockery.deregisterMock(rpPackagePath);
-        });
+      after(() => {
+        mockery.deregisterMock(path.join(process.cwd(), 'package.json'));
+        mockery.registerMock(path.join(process.cwd(), 'package.json'), packageMock);
+        const rpPackagePath = path.join(process.cwd(), 'node_modules', 'request-promise', 'package.json');
+        mockery.deregisterMock(rpPackagePath);
+      });
 
-        it('should skip optional peer dependencies', () => {
-          const expectedCompositePackageJSON = {
-            name: 'test-service',
-            version: '1.0.0',
-            description: 'Packaged externals for test-service',
-            private: true,
-            scripts: {},
-            dependencies: {
-              bluebird: '^3.5.0',
-              'request-promise': '^4.2.1',
-              request: '^2.82.0'
-            }
-          };
-          const expectedPackageJSON = {
-            name: 'test-service',
-            version: '1.0.0',
-            description: 'Packaged externals for test-service',
-            private: true,
-            scripts: {},
-            dependencies: {
-              bluebird: '^3.5.0',
-              'request-promise': '^4.2.1',
-              request: '^2.82.0'
-            }
-          };
+      it('should install external peer dependencies', () => {
+        const expectedCompositePackageJSON = {
+          name: 'test-service',
+          version: '1.0.0',
+          description: 'Packaged externals for test-service',
+          private: true,
+          scripts: {},
+          dependencies: {
+            bluebird: '^3.5.0',
+            'request-promise': '^4.2.1',
+            request: '^2.82.0'
+          }
+        };
+        const expectedPackageJSON = {
+          name: 'test-service',
+          version: '1.0.0',
+          description: 'Packaged externals for test-service',
+          private: true,
+          scripts: {},
+          dependencies: {
+            bluebird: '^3.5.0',
+            'request-promise': '^4.2.1',
+            request: '^2.82.0'
+          }
+        };
 
-          const dependencyGraph = require('./data/npm-ls-peerdeps.json');
-          const peerDepStats = {
-            stats: [
-              {
-                compilation: {
-                  chunks: [
-                    new ChunkMock([
-                      {
-                        identifier: _.constant('"crypto"')
-                      },
-                      {
-                        identifier: _.constant('"uuid/v4"')
-                      },
-                      {
-                        identifier: _.constant('"mockery"')
-                      },
-                      {
-                        identifier: _.constant('"@scoped/vendor/module1"')
-                      },
-                      {
-                        identifier: _.constant('external "bluebird"')
-                      },
-                      {
-                        identifier: _.constant('external "request-promise"')
-                      }
-                    ])
-                  ],
-                  compiler: {
-                    outputPath: '/my/Service/Path/.webpack/service'
-                  }
+        const dependencyGraph = require('./data/npm-ls-peerdeps.json');
+        const peerDepStats = {
+          stats: [
+            {
+              compilation: {
+                chunks: [
+                  new ChunkMock([
+                    {
+                      identifier: _.constant('"crypto"')
+                    },
+                    {
+                      identifier: _.constant('"uuid/v4"')
+                    },
+                    {
+                      identifier: _.constant('"mockery"')
+                    },
+                    {
+                      identifier: _.constant('"@scoped/vendor/module1"')
+                    },
+                    {
+                      identifier: _.constant('external "bluebird"')
+                    },
+                    {
+                      identifier: _.constant('external "request-promise"')
+                    }
+                  ])
+                ],
+                compiler: {
+                  outputPath: '/my/Service/Path/.webpack/service'
                 }
               }
-            ]
-          };
+            }
+          ]
+        };
 
-          module.webpackOutputPath = 'outputPath';
-          fsExtraMock.pathExists.yields(null, false);
-          fsExtraMock.copy.yields();
-          packagerMock.getProdDependencies.returns(BbPromise.resolve(dependencyGraph));
-          packagerMock.install.returns(BbPromise.resolve());
-          packagerMock.prune.returns(BbPromise.resolve());
-          packagerMock.runScripts.returns(BbPromise.resolve());
-          module.compileStats = peerDepStats;
-          return expect(module.packExternalModules()).to.be.fulfilled.then(() =>
-            BbPromise.all([
-              // The module package JSON and the composite one should have been stored
-              expect(writeFileSyncStub).to.have.been.calledTwice,
-              expect(writeFileSyncStub.firstCall.args[1]).to.equal(
-                JSON.stringify(expectedCompositePackageJSON, null, 2)
-              ),
-              expect(writeFileSyncStub.secondCall.args[1]).to.equal(JSON.stringify(expectedPackageJSON, null, 2)),
-              // The modules should have been copied
-              expect(fsExtraMock.copy).to.have.been.calledOnce,
-              // npm ls and npm prune should have been called
-              expect(packagerMock.getProdDependencies).to.have.been.calledOnce,
-              expect(packagerMock.install).to.have.been.calledOnce,
-              expect(packagerMock.prune).to.have.been.calledOnce,
-              expect(packagerMock.runScripts).to.have.been.calledOnce
-            ])
-          );
-        });
+        module.webpackOutputPath = 'outputPath';
+        fsExtraMock.pathExists.yields(null, false);
+        fsExtraMock.copy.yields();
+        packagerMock.getProdDependencies.returns(BbPromise.resolve(dependencyGraph));
+        packagerMock.install.returns(BbPromise.resolve());
+        packagerMock.prune.returns(BbPromise.resolve());
+        packagerMock.runScripts.returns(BbPromise.resolve());
+        module.compileStats = peerDepStats;
+        return expect(module.packExternalModules()).to.be.fulfilled.then(() =>
+          BbPromise.all([
+            // The module package JSON and the composite one should have been stored
+            expect(writeFileSyncStub).to.have.been.calledTwice,
+            expect(writeFileSyncStub.firstCall.args[1]).to.equal(JSON.stringify(expectedCompositePackageJSON, null, 2)),
+            expect(writeFileSyncStub.secondCall.args[1]).to.equal(JSON.stringify(expectedPackageJSON, null, 2)),
+            // The modules should have been copied
+            expect(fsExtraMock.copy).to.have.been.calledOnce,
+            // npm ls and npm prune should have been called
+            expect(packagerMock.getProdDependencies).to.have.been.calledOnce,
+            expect(packagerMock.install).to.have.been.calledOnce,
+            expect(packagerMock.prune).to.have.been.calledOnce,
+            expect(packagerMock.runScripts).to.have.been.calledOnce
+          ])
+        );
       });
     });
   });
diff --git a/tests/validate.test.js b/tests/validate.test.js
index fe2563e..df62757 100644
--- a/tests/validate.test.js
+++ b/tests/validate.test.js
@@ -212,21 +212,6 @@ describe('validate', () => {
     });
   });
 
-  describe('default node', () => {
-    it('should turn NodeStuffPlugin and NodeSourcePlugin plugins off by default', () => {
-      const testEntry = 'testentry';
-      const testConfig = {
-        entry: testEntry,
-      };
-      const testServicePath = 'testpath';
-      module.serverless.config.servicePath = testServicePath;
-      _.set(module.serverless.service, 'custom.webpack.config', testConfig);
-      return module
-        .validate()
-        .then(() => expect(module.webpackConfig.node).to.eql(false));
-    });
-  });
-
   describe('config file load', () => {
     it('should load a webpack config from file if `custom.webpack` is a string', () => {
       const testConfig = 'testconfig';
@@ -422,8 +407,7 @@ describe('validate', () => {
                 path: 'func1path'
               }
             }
-          ],
-          runtime: 'node10.x'
+          ]
         },
         func2: {
           handler: 'module2.func2handler',
@@ -438,8 +422,7 @@ describe('validate', () => {
             {
               nonhttp: 'non-http'
             }
-          ],
-          runtime: 'node10.x'
+          ]
         },
         func3: {
           handler: 'handlers/func3/module2.func3handler',
@@ -448,8 +431,7 @@ describe('validate', () => {
             {
               nonhttp: 'non-http'
             }
-          ],
-          runtime: 'node10.x'
+          ]
         },
         func4: {
           handler: 'handlers/module2/func3/module2.func3handler',
@@ -458,18 +440,7 @@ describe('validate', () => {
             {
               nonhttp: 'non-http'
             }
-          ],
-          runtime: 'node10.x'
-        },
-        func5: {
-          handler: 'com.serverless.Handler',
-          artifact: 'target/hello-dev.jar',
-          events: [
-            {
-              nonhttp: 'non-http'
-            }
-          ],
-          runtime: 'java8'
+          ]
         }
       };
 
@@ -483,24 +454,19 @@ describe('validate', () => {
                 path: 'func1path'
               }
             }
-          ],
-          runtime: 'node10.x'
+          ]
         }
       };
 
-      it('should expose all node functions if `options.function` is not defined', () => {
+      it('should expose all functions if `options.function` is not defined', () => {
         const testOutPath = 'test';
         const testConfig = {
           entry: 'test',
           context: 'testcontext',
           output: {
             path: testOutPath
-          },
-          getFunction: func => {
-            return testFunctionsConfig[func];
           }
         };
-
         _.set(module.serverless.service, 'custom.webpack.config', testConfig);
         module.serverless.service.functions = testFunctionsConfig;
         globSyncStub.callsFake(filename => [_.replace(filename, '*', 'js')]);
@@ -913,4 +879,3 @@ describe('validate', () => {
     });
   });
 });
-