如何使用Typescript的引用和构建模式将单存储库编译为无服务器捆绑软件?

时间:2018-08-20 22:41:13

标签: typescript serverless-framework serverless lerna monorepo

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

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

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

虽然在tsc -b上可以很好地进行构建,但是问题在于无服务器框架需要上载单个工件.zip(在我的情况下是上载到AWS)。构建无服务器服务时,例如this example,将仅捆绑最近的源文件的编译文件。

如何将打字稿的引用功能与无服务器单存储库一起使用?

1 个答案:

答案 0 :(得分:3)

如果它适合您生成单个输出文件并使用模块加载器,则可以使用outFile and prepend

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

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