我从那里有一个node_modules文件夹,我只想排除几个模块,但包装时应添加其他模块。我该怎么做。还如何使用正则表达式排除某些模块。就像在我的node_modules中一样,我已经创建了以md-request,md-models等开头的自定义模块。因此,我只想从打包中排除这些模块。 提前致谢。
答案 0 :(得分:2)
您最有可能试图排除开发人员依赖性。使用npm i some-dependency --save-dev
安装您的开发依赖项,默认情况下,Serverless不会将它们打包到最终工件中。
如果这还不够,您可以排除所有内容,仅包括您需要的内容。
您可以看到打包工件时Serverless的行为,以及如何排除/包含对official docs的依赖关系
下面是一个示例(从他们的文档中摘录):排除 node_modules,但保留node_modules / node-fetch(这正是您要查找的内容):
package:
exclude:
- node_modules/**
- '!node_modules/node-fetch/**'
这是您可以仅包含所需内容的方法:
package:
exclude:
- src/**
include:
- src/function/handler.js
编辑:在OP进行评论后,以下是处理所需行为的方法:
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_*/**
编辑2 :这是一个有效的示例(请参见我排除了aws-sdk):
package:
exclude:
- node_modules/aws-sdk/**
由于软件包太大,并且我无法通过AWS Lambda的控制台看到它,所以我要附加两个屏幕截图-一个带有排除的屏幕截图,另一个不带有排除的屏幕截图(请参阅包大小如何更改)。
排除:
不排除:
这样,您甚至不需要添加'!node_modules / whatever-i-want-to-keep'参数
编辑3 :在具有手动创建的node_modules和各自的my_module_ *目录的示例项目中使用*
通配符