如何从Mono存储库构建NestJs API

时间:2019-04-30 10:17:17

标签: angular docker nestjs monorepo nrwl

我正在一个项目中,我们将代码存储在由nrwl“管理”的monorepo中。该仓库包含几个角度应用程序和几个nestjs API。

现在,我们要对这些api进行泊坞处理,以便将它们部署到我们的kubernetes。

我可以通过调用ng serve api1来启动一个api。我也可以通过运行ng build api1来构建单个api。我遇到的问题是,每个api都需要与之一起部署的完整node_modules文件夹。据我所知,angular使用webpack打包了所有功能。

有没有一种方法来构建NestJs api并包含所有必需的node_modules?

2 个答案:

答案 0 :(得分:1)

我们实际上刚刚发布了一种使用NestJS创建Monorepos的本地方法,您可以在Trilon博客上阅读有关full announcement here的更多信息

有了独立的NestJS应用程序,您现在可以简单地创建(另一个应用程序或库)并将其自动转换为monorepo工作区。

# make sure you have the latest @nestjs/cli
npm i --g @nestjs/cli

# if you want to create an app
nest g app my-other-app

# library
nest g lib my-library

现在,您将可以使用nest build NAME来构建所需的任何应用程序,并且所有node_modules等都将被正确捆绑,等等!


此新的工作区设置将创建您习惯的命名约定:

# ** FROM

 /src/ ... application code ...

# ** TO

/apps/
  /nest-app/
  /another-app/

/libs/
  /some-shared-lib/
  / ... /

当前在Nest中设置monorepos的方式非常适合仅嵌套/节点代码库的monorepos。前端monorepos可以在其他地方分开保存,因为可以在FE <> BE之间共享有限的代码(只有一些没有装饰器的接口)。

希望有帮助:)

答案 1 :(得分:0)

尝试在包含项目的文件夹中进行npm i,它应该在nodes_modules文件夹中安装所有依赖项。

如果您使用docker,则可以在像这样在Dockerfile中构建应用程序之前运行此命令

RUN npm i <== Install dependencies

RUN ng build api1 <== Build the app

CMD ["ng", "serve", "api1"] <== Run the app