Включить исключить пакеты в безсерверный YML из той же папки - PullRequest
0 голосов
/ 04 марта 2019

У меня есть папка node_modules, я хочу исключить только несколько модулей, но другие модули должны быть добавлены во время упаковки.Как я могу это сделать. Также как исключить некоторые модули с помощью регулярных выражений.Как и в моих node_modules, я создал пользовательские модули, которые начинаются с md-request, md-models и т. д., поэтому я хочу исключить только эти модули из упаковки.Заранее спасибо.

1 Ответ

0 голосов
/ 04 марта 2019

Скорее всего, вы пытаетесь исключить 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, я прилагаю два снимка экрана - один с исключением, а другой без исключения (см. какразмер пакета меняется).

С исключением:

enter image description here

Без исключения:

enter image description here

Таким образом, вам даже не нужно добавлять аргумент '! Node_modules / what-i-i-want-to-keep'

EDIT 3 : Использование подстановочного знака * в примере проекта с вручную созданными node_modules и соответствующими каталогами my_module_ *

enter image description here

enter image description here

...