问题是,假设我想同时启动多个服务(几个npm start),将这些服务作为单独的项目运行是不方便的。我希望在一个项目工作区中有一个类似于下面的文件夹结构:
project
├── service1
│ ├── node_modules
│ │ ├── @module1
│ │ └── @module2
│ ├── package-lock.json
│ ├── package.json
│ ├── public
│ └── src
├── service2
│ ├── node_modules
│ │ ├── @module1
│ │ └── @module2
│ ├── package-lock.json
│ ├── package.json
│ ├── public
│ └── src
└── service3
├── node_modules
│ ├── @module1
│ └── @module2
├── package-lock.json
├── package.json
├── public
└── src有什么干净的方法可以做到呢?我需要一起启动多个服务,如果可能的话,显然需要以方便的方式调试任何服务。
发布于 2022-09-18 22:51:04
它们之间有一些细微的差别,但本质上两者都在做同样的事情。
勒纳
其中一个微妙的区别是,Nx将迫使您在根文件夹中使用单个package.json,本质上迫使您对所有微服务使用相同的依赖关系。相比之下,Lerna仍然允许每个文件夹中有一个特定的package.json,这看起来更像您当前的目录结构。
总的来说,我认为Lerna是一个安全的选择。你可以找到一个很好的教程这里。
Nx
另一方面,尽管Lerna已经存在了更长的时间,但它有时也有一些怪癖。我相信Nx在技术上可能是一个更健壮的解决方案。
然而,我必须承认,我看到它主要用于单回购前端项目,而不是经常用于后端项目。从技术上讲,它应该能够同时处理这两个问题。
为了让您开始使用Nx,您可以遵循这教程。
破坏者: Nx有像nx run-many这样的命令,可以帮助您一起执行多个服务。迁移到nx之后,您可以将该命令放入package.json__的__脚本中,以便npm run start和npm start执行该命令。
https://stackoverflow.com/questions/73765528
复制相似问题