首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用将静态文件包含到lambda包中?

如何使用将静态文件包含到lambda包中?
EN

Stack Overflow用户
提问于 2022-11-22 14:14:30
回答 1查看 47关注 0票数 1

我有一个NodeJS AWS函数,它基于html模板文件(emailTemplate.html)生成电子邮件。我创办了通过SAM构建我的羔羊。现在,我想知道如何将SAM/esbuild配置为将该文件包含到lambda包中。

这是lambda的SAM模板配置:

代码语言:javascript
复制
  EmailNotificationFunction:
    Type: AWS::Serverless::Function
    Properties:
      CodeUri: ./lambdas-node/email-notifications/
      Handler: daily-summary.handler
      Timeout: 120
      MemorySize: 512
      Runtime: nodejs16.x
    Metadata:
      BuildMethod: esbuild
      BuildProperties:
        Sourcemap: true
        EntryPoints:
          - daily-summary.ts

在我的应用程序代码中,我从本地文件系统读取该文件:

代码语言:javascript
复制
fs.readFileSync("./emailTemplate.html", "utf-8")

html文件很小,所以我想坚持这种极简的方法。我总是可以从S3中获取文件或将其打包到一个层中,但我不喜欢这样做。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-11-24 15:12:41

好的,基本上,ESBuild的文件加载器是要走的路。ESBuild将用对文件的引用替换导入,并将文件复制到结果包。(这正是我想要的。)

这种行为似乎是ESBuild特有的,不适用于常规的tsc编译器。因此,我将构建步骤替换为使用tsc进行打字,用esbuild转换(见下文)。

我在代码中添加了html文件的导入。这将触发ESBuild来处理这个文件。

代码语言:javascript
复制
import emailTemplateHtmlUrl from "./emailTemplate.html";

为了让打字机高兴,我还添加了一个types.d.ts文件(请记住d.ts扩展名)。

代码语言:javascript
复制
declare module '*.html' {
  const value: string;
  export default value
}

然后,我将Loader添加到我的SAM模板中,以便ESBuild可以复制html文件并在导入中引用它们:

代码语言:javascript
复制
  EmailNotificationFunction:
    Type: AWS::Serverless::Function
    Properties:
      CodeUri: ./lambdas-node/email-notifications/
      Handler: daily-summary.handler
      Timeout: 120
      MemorySize: 512
      Runtime: nodejs16.x
    Metadata:
      BuildMethod: esbuild
      BuildProperties:
        Sourcemap: true
        Loader:
          - .html=file
        EntryPoints:
          - daily-summary.ts

最后,我的新测试命令现在看起来如下:

代码语言:javascript
复制
tsc --noEmit
npx esbuild daily-summary.ts --outdir=. --loader:.html=file --platform=node 
--bundle
mocha *.spec.js
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74534054

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档