typescript - 如何使用 Typescript 的引用和构建模式将 mono repo 编译为 serverless bundle?

标签 typescript serverless-framework serverless lerna monorepo

Typescript 最近引入了一项与 monorepos 一起使用的新功能:引用。通过指定引用,您可以使用 tsc -b 构建所有相互依赖的包(另请参见 blog post)

这似乎非常适合与大型单一存储库一起使用,其中一些包是无服务器服务。这些服务通常依赖于 monorepo 的一个或多个包。我在这里创建了一个示例:

https://github.com/tommedema/serverless-mono-example

虽然使用 tsc -b 构建效果很好,但问题是无服务器框架需要上传单个工件 .zip(在我的例子中是 AWS)。在构建无服务器服务时,例如 this example , 只有距离最近的源文件的编译文件才会被打包。

如何将 typescript 的引用功能用于无服务器单存储库?

最佳答案

如果生成单个输出文件并使用模块加载器对你有用,你可以使用 outFile and prepend .

如果你想要多个输出文件,也许值得提出一个建议,要求在这种情况下选择捆绑依赖项;你将是今天第二个在 Stack Overflow 上询问这个问题的人。编辑:Suggestion is here .

编辑 2:经过广泛讨论,结论是在最终的 Yarn 工作区上启用 nohoist 选项,这为我们提供了从 node_modules 到其他工作区的符号链接(symbolic link)。在最终工作区中调用 tsc -b 后,无服务器打包工具会遵循符号链接(symbolic link)并生成具有正确结构的 zip 文件。在 TypeScript 级别不需要捆绑。警告:Yarn 似乎在最终工作区中安装了依赖项的 devDependencies,这对我来说似乎是错误的,并且使 Serverless 感到困惑,不必要地将这些模块包含在包中。

关于typescript - 如何使用 Typescript 的引用和构建模式将 mono repo 编译为 serverless bundle?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51939395/

相关文章:

typescript - 如何在 A-La-Carte 系统中使用 vuetify 加载程序时导入 vuetify/lib

amazon-web-services - 为什么 S3 (arn:aws:s3:::) 等 IAM 角色语句不适用于 SQS 等其他 AWS 资源?

git - 将 Git 存储库直接镜像到 AWS CodeCommit

amazon-web-services - 如何保护无服务器框架端点免受滥用/DoS 攻击?

npm - 无服务器框架从代理后面登录?

node.js - native 无服务器与无服务器 Express

Angular 路由器不会第一次从一个组件导航到另一个组件

reactjs - 输入 NextJs 链接/路由

typescript - RxJS 处理闭包变量

node.js - Firebase 函数 : How to maintain 'app-global' API client?