我有一个node_modules文件夹,我想从那里只排除几个模块,但其他模块应该在打包时添加。我该怎么做呢?还有如何使用regex排除一些模块。像在我的node_modules中,我创建了自定义模块,以md-request,md-models等开头。所以我想从打包中只排除这些模块。提前感谢。
mrfwxfqh1#
很有可能你想排除dev依赖项,使用npm i some-dependency --save-dev安装你的dev依赖项,默认情况下,Serverless不会把它们打包到最终的工件中。如果这还不够,您可以排除所有内容,只包含您需要的内容。您可以看到Serverless在打包工件时的行为,以及如何排除/包含official docs上的依赖项下面是一个例子(摘自他们的文档),它excludenode_modules,但保留node_modules/node-fetch(这正是您要找的):
npm i some-dependency --save-dev
package: exclude: - node_modules/** - '!node_modules/node-fetch/**'
这就是您仅包含您需要的内容的方法:
package: exclude: - src/** include: - src/function/handler.js
EDIT:在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_*/**
EDIT 2:下面是一个工作示例(请注意我排除了aws-sdk):
package: exclude: - node_modules/aws-sdk/**
由于包太大,我无法通过AWS Lambda的控制台看到它,所以我附上了两个屏幕截图-一个带有exclude,一个没有exclude(请查看包大小如何变化)。排除:
不排除:
这样,您甚至不需要添加“!node_modules/whatever-i-want-to-keep”参数
EDIT 3:在示例项目中使用*通配符,手动创建node_modules和各自的my_module_* 目录
dm7nw8vv2#
我认为serverless最新版本(3.x)不再支持exclude关键字了。我可以使用以下命令来实现:
exclude
package: patterns: - src/** # include only files from ./src/**/* - '!node_modules/**' # exclude files from ./node_modules/**/*
2条答案
按热度按时间mrfwxfqh1#
很有可能你想排除dev依赖项,使用
npm i some-dependency --save-dev
安装你的dev依赖项,默认情况下,Serverless不会把它们打包到最终的工件中。如果这还不够,您可以排除所有内容,只包含您需要的内容。
您可以看到Serverless在打包工件时的行为,以及如何排除/包含official docs上的依赖项
下面是一个例子(摘自他们的文档),它excludenode_modules,但保留node_modules/node-fetch(这正是您要找的):
这就是您仅包含您需要的内容的方法:
EDIT:在OP的注解之后,以下是如何处理所需行为:
如果模块名称像上面这样彼此非常接近,您可以使用通配符
*
在一行程序中将它们全部排除:EDIT 2:下面是一个工作示例(请注意我排除了aws-sdk):
由于包太大,我无法通过AWS Lambda的控制台看到它,所以我附上了两个屏幕截图-一个带有exclude,一个没有exclude(请查看包大小如何变化)。
排除:
不排除:
这样,您甚至不需要添加“!node_modules/whatever-i-want-to-keep”参数
EDIT 3:在示例项目中使用
*
通配符,手动创建node_modules和各自的my_module_* 目录dm7nw8vv2#
我认为serverless最新版本(3.x)不再支持
exclude
关键字了。我可以使用以下命令来实现: