Скорее всего, вы пытаетесь исключить dev-зависимости.Установите ваши dev-зависимости, используя npm i some-dependency --save-dev
, и по умолчанию Serverless не будет упаковывать их в конечный артефакт.
Если этого недостаточно, вы можете исключить все и включить только то, что вам нужно.
Вы можете увидеть, как ведет себя безсерверный сервер при упаковке артефакта, а также узнать, как исключить / включить зависимости в официальных документах
Вотпример (извлеченный из их документов) для исключая node_modules, но для сохранения node_modules / node-fetch (что в значительной степени то, что вы ищете):
package:
exclude:
- node_modules/**
- '!node_modules/node-fetch/**'
И этокак вы можете включать только то, что вам нужно:
package:
exclude:
- src/**
include:
- src/function/handler.js
РЕДАКТИРОВАТЬ : после комментария ОП, вот как обработать желаемое поведение:
package:
exclude:
- node_modules/my_module_1/**
- node_modules/my_module_2/**
- node_modules/my_module_3/**
- node_modules/my_module_4/**
Если имена модулей очень близки друг к другу, как указано выше, вы можете использовать подстановочный знак *
, чтобы исключить их все в одну строку:
package:
exclude:
- node_modules/my_module_*/**
EDIT 2: Вот рабочий пример (см., Что я исключенing aws-sdk):
package:
exclude:
- node_modules/aws-sdk/**
Поскольку пакет слишком велик, и я не могу увидеть его через консоль AWS Lambda, я прилагаю два снимка экрана - один с исключением, а другой без исключения (см. какразмер пакета меняется).
С исключением:
Без исключения:
Таким образом, вам даже не нужно добавлять аргумент '! Node_modules / what-i-i-want-to-keep'
EDIT 3 : Использование подстановочного знака *
в примере проекта с вручную созданными node_modules и соответствующими каталогами my_module_ *