diff --git a/docs/deprecations.md b/docs/deprecations.md
index 7b936a7c2..0f40fa2f1 100644
--- a/docs/deprecations.md
+++ b/docs/deprecations.md
@@ -38,6 +38,16 @@ Note:
- The `serverless.yml` setting is ineffective for deprecations reported before the configuration is read.
- `SLS_DEPRECATION_DISABLE` and `disabledDeprecations` remain respected, and no errors will be thrown for mentioned deprecation codes.
+
+
+## New way to define packaging patterns
+
+Deprecation code: `PACKAGE_PATTERNS`
+
+Support for `package.include` and `package.exclude` will be removed with v4.0.0. Instead please use `package.patterns` with which both _include_ and _exclude_ (prefixed with `!`) rules can be configured.
+
+Check [Packaging Patterns](/framework/docs/providers/aws/guide/packaging/#patterns) documentation for more info.
+
## CLI `--function`/`-f` option for `deploy` command
diff --git a/lib/plugins/package/package.js b/lib/plugins/package/package.js
index 20ad625d1..327533cd2 100644
--- a/lib/plugins/package/package.js
+++ b/lib/plugins/package/package.js
@@ -33,6 +33,26 @@ class Package {
};
this.hooks = {
+ 'initialize': () => {
+ const usesIncludeOrExclude = (packageConfig = {}) =>
+ packageConfig.include || packageConfig.exclude;
+
+ if (
+ usesIncludeOrExclude(this.serverless.service.package || {}) ||
+ Object.values(this.serverless.service.functions).some((func) =>
+ usesIncludeOrExclude(func.package)
+ ) ||
+ Object.values(this.serverless.service.layers || {}).some((func) =>
+ usesIncludeOrExclude(func.package)
+ )
+ ) {
+ this.serverless._logDeprecation(
+ 'PACKAGE_PATTERNS',
+ 'Support for "package.include" and "package.exclude" will be removed in the next' +
+ ' major release. Please use "package.patterns" instead'
+ );
+ }
+ },
'package:createDeploymentArtifacts': async () =>
BbPromise.bind(this).then(this.packageService),