NPM工作区对于服务器端项目有意义吗?在服务器端项目中,所有依赖项都需要使用CI和服务器代码一起发布

ybzsozfc  于 2023-04-30  发布在  其他
关注(0)|答案(2)|浏览(85)

NPM可以用于不同的事情

  • 前端项目,其中最终工件通常包含所有依赖项。
  • 服务端服务,其中node_modules目录可用于运行时服务器代码。

NPM当前将依赖项提升到工作区项目中的根node_modules文件夹。即使他们的新提案https://github.com/npm/rfcs/blob/main/accepted/0042-isolated-mode.md似乎仍然不允许所有依赖项都安装在包旁边的node_modules文件夹旁边。工作区文件夹JSON。您要么必须将根node_modules文件夹复制到父目录,这对于释放多个服务(因为它是共享资源)来说会变得复杂,要么必须合并这两个文件夹,这也不是小事。
当您希望在CI环境中构建,然后将代码和所有依赖项移到其他地方时,这就成了一个问题
有没有人想到他们是如何解决/避免/处理这个问题的?

i2loujxw

i2loujxw1#

我最后选择了Lerna,因为它似乎能完美地处理这种情况。Lerna基本上独立处理每个“子项目”。
https://lerna.js.org/
我不认为npm workspaces适合这种类型的工作流,或者说它一开始就没有被设计成这样

46scxncf

46scxncf2#

如果你正在使用monorepo,我强烈建议使用pnpm,因为它非常快,类似于npm(感觉很熟悉),并且从第一天起就对monorepos提供了一流的支持(不像npm和yarn)。最重要的是,它可以像您希望的那样在项目级别安装依赖项-从而避免了提升带来的所有问题。
我还推荐一个像turboreponx这样的工具来为你的monorepo提供动力(nx现在是lerna背后的引擎)。

相关问题