【问题标题】:Running eleventy build (via npm run) as AWS Lambda function作为 AWS Lambda 函数运行 110 构建(通过 npm run)
【发布时间】:2022-01-03 02:40:33
【问题描述】:

我有一个eleventy Node 项目,它从 JSON 文件呈现 HTML。

目前,我使用npm run(运行the eleventy CLI)在本地运行它

这是我脑海中的工作流程:

  • 将 JSON 文件放入 S3 存储桶中
  • 在每次文件更改时,运行 HTML 构建
  • 将输出推送到为网页提供服务的不同 S3 存储桶

从概念上讲,我觉得这将是一个标准的 FaaS 用例。

实际上,我偶然发现了 Node.js-Lambda 运行时总是期望调用显式函数处理程序这一事实。似乎 Eleventy 没有提供从代码调用的标准方法(或者我还没有发现)。

我发现我可以将我的包构建到一个 Docker 容器中并运行 npm run 作为入口点。这肯定会起作用,但似乎没有必要,因为如果我将包放入部署工件中,Lambda 提供的 Node.js 运行时应该能够运行我的 npm build 命令。

我的脑子里有结吗?有什么我忽略的吗? 任何意见都会很高兴。

【问题讨论】:

    标签: node.js amazon-web-services npm aws-lambda eleventy


    【解决方案1】:

    我不确定这是否受支持,因为我没有看到它记录在案,但我查看了 Eleventy 的单元测试并看到了很多这样的示例 (https://github.com/11ty/eleventy/tree/master/test)。我尝试了以下方法,它奏效了。请注意,初始化写入都是异步的,我没有正确等待它们,我只是想举一个简单的例子:

    const Eleventy = require('@11ty/eleventy');
    
    const elev = new Eleventy('./input', './output');
    
    elev.init();
    elev.write();
    
    console.log('done');
    

    【讨论】:

    • 是的,这似乎有效!非常感谢您的提示和花时间看看这个,雷蒙德! :)
    • 仅供参考,请参阅新文档 - 它更好更清晰:11ty.dev/docs/programmatic
    猜你喜欢
    • 2020-05-14
    • 2017-02-27
    • 1970-01-01
    • 1970-01-01
    • 2017-10-23
    • 1970-01-01
    • 2021-08-10
    • 1970-01-01
    • 2020-12-25
    相关资源
    最近更新 更多