如何使用无服务器部署功能,使其仅包含所需的文件夹/文件

时间:2017-12-20 11:28:13

标签: javascript amazon-web-services aws-lambda aws-sdk serverless-framework

    |--serverless.yml
    |--lib/
    |--node_modules/
    |--api/
        |--manageclient/
            |--addClient/
                |--handler.js

这是我的文件夹结构, 如何使用无服务器部署函数,使其仅包含handler.js和node_modules /和lib /.

请指定要在main serverless.yml上写的功能命令?

我的YML功能声明

handler: api/manageclient/addClient/addclient.addclient
   package:
     exclude:
       - ./*
       - !api/manageclient/addClient/**
       - !api/node_modules/**
       - !api/lib/**

3 个答案:

答案 0 :(得分:1)

您可以使用包和exclude配置来更好地控制打包过程。

将此添加到您的serverless.yml:

package:
  include:
    - node_modules/**
    - lib/** 
functions:
  yourfunctionname:
    handler: api/manageclient/addclient/handler.handler

有关包含/排除文件夹的更多信息:https://serverless.com/framework/docs/providers/aws/guide/packaging/

答案 1 :(得分:1)

像这样更改您的serverless.yml文件:

package:
  exclude:
    -./**
  include:
    -node-modules/**
    -lib/**

以及您的功能

function:
  functionname:
    handler: api/manageclient/addclient/handler.handler
    package:
      include:
       -api/manageclient/addclient/handler.js

答案 2 :(得分:0)

这是我的结构:

package:
  individually: true
  exclude:
    - ./**

在我的功能中

functions:
  lambda:
    handler: dist/index.handler
    package:
      include:
        - 'dist/**/*'
        - '!dist/**/*.map'
        - '!node_modules/aws-sdk/**/*'

首先,您告诉无服务器您要排除所有内容,然后说每个功能都将包含自己的文件。

在每个函数中,我将所有内容都包含在特定文件夹内(如dist),然后将特定文件排除为以.map结尾的文件或例如节点内部的aws-sdk库模块。