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

2024-03-08

Typescript 最近引入了一项与 monorepos 配合使用的新功能:引用。通过指定引用,您可以使用以下命令构建所有相互依赖的包tsc -b(另请参阅此博客文章 https://blogs.msdn.microsoft.com/typescript/2018/07/30/announcing-typescript-3-0/#project-references)

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

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

虽然建筑效果很好tsc -b,问题是无服务器框架需要上传单个工件 .zip(在我的例子中上传到 AWS)。在构建无服务器服务时,例如这个例子 https://github.com/tommedema/serverless-mono-example/tree/master/packages/serverless-random,只有最近的源文件的编译文件才会被捆绑。

如何将 Typescript 的引用功能与无服务器 Mono 存储库结合使用?


如果它适合您生成单个输出文件并使用模块加载器,您可以使用outFile and prepend https://www.typescriptlang.org/docs/handbook/project-references.html#prepend-with-outfile.

如果您想要多个输出文件,也许值得提出建议,要求提供在这种情况下捆绑依赖项的选项;您将是今天第二个在 Stack Overflow 上询问此问题的人。编辑:建议在这里 https://github.com/Microsoft/TypeScript/issues/26565.

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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何使用 Typescript 的引用和构建模式将 Mono 存储库编译为无服务器捆绑包? 的相关文章

随机推荐