Lambda包含对node_modules

时间:2017-12-10 04:36:53

标签: lambda node-modules

我是Lambda的新手,正在尝试弄清楚如何在node_modules上部署依赖项。请注意我没有使用无服务器。我正在使用webpack捆绑我的Lambda函数。

我想做的第一件事就是将node_module依赖项作为webpack构建过程的一部分捆绑为一个文件。但后来我发现这不是一件好事吗?我有的下一个选项是将相应的从属节点模块复制到lambda部署zip文件夹中。但我在这里遇到的问题是

  1. 这是部署依赖项的标准方法吗?
  2. 如果我的依赖依赖于另一个依赖,那么就说依赖2那么我怎么知道这个并且我是否还需要复制它?
  3. 有没有其他标准方法做我错过的事情?

1 个答案:

答案 0 :(得分:3)

  

这是部署依赖项的标准方法吗?

标准方法是在必要时上传包含处理程序文件和node_modules目录的zip包。

webpack方式是创建一个单一的javascript文件包,其中已包含一个文件中的所有依赖项(在大多数情况下)。如果您具有依赖于本机绑定的依赖项(例如bcrypt),则可以将它们从webpack中排除,并且您可以将bcrypt正常包含在node_modules目录中。

  

如果我的依赖关系依赖于另一个依赖关系,请说依赖关系2然后我如何知道这一点,我是否还需要复制它?

使用标准方式,npm已经为您处理了这些依赖项。因此,您所要做的就是将node_modules包含在部署包中。

使用webpack,它会为您处理此问题。只需学会正确配置它。

作为webpack配置的最小示例,您可以使用:

const path = require('path');

module.exports = {
  entry: {
    handler: './handler.js',
  },
  target: 'node',
  output: {
    libraryTarget: 'commonjs',
    path: path.join(__dirname, '.webpack'),
    filename: '[name].js'
  },
};