有在使用 nx 前端 build 系统的 Nodejs 开发者吗?

有在使用 nx 前端 build 系统的 Nodejs 开发者吗?

https://nx.dev/

用起来怎么样?有什么可分享下的吗,谢谢。

14 回复

别的先不提。
它们这个官方访问体验真是好的离谱啊。


刚试用他们的 Get Started
结果 NX cannot find project "is-even"

第一步就挂了

卒。。。

现在 lerna 的项目默认好像就是使用 nx

它这个示例有问题,package.json 里的 name 是 /is-even ,你改成 is-even 就可以了

Monorepo 的概念,一个项目多个 app 放在一个 repo 下面

觉得 turbo+pnpm 体验比 nx 包,构建使用 esbuild+rollup

s/包 /好 /

目前还不知道 nx 怎么管理单独应用里的 package.json 依赖,似乎不支持,见 https://github.com/nrwl/nx/issues/1777

但是 turborepo 就支持的很好,官方文档里就有例子。见这个评论: https://github.com/nrwl/nx/issues/1777#issuecomment-1100573328

目前的想法就是:

- turborepo 用于 monorepo 管理,app 构建。
- plop 用于代码模板生成。
- 使用 git-submodules 管理大的 app ,防止整个 monorepo ,同时提供脚本命令方便添加应用和更新应用代码。
- 集成 storybook ,nx 有 storybook 插件可以很方便的管理,在 turbo 里只能自己用 plop 处理了。

更新:

最近一直在折腾 nx 。nx 对 yarn/npm 管理的 monorepo 感觉文档很少,然后 nx 通过很多黑魔法来实现现在它的一些特性。

对于 turborepo ,它是借助于 yarn/npm 的 workspace 特性管理依赖的,然后提供 任务 pipeline 和 构建缓存机制。nx 则是在各个执行器 excuators 里面,进行了封装。比如 webpack 的 executor 会利用 tsconfig.json 里的 path 进行依赖注册,这样,当你进行 import /someModule/someFile.ts 的时候,尽管你没有在你的 app 项目里进行依赖声明,nx 会自动帮你解决依赖引用的问题,对于 webpack 使用的是 ts-node 。对于 nodejs 类型的使用的是 hack 的方式,将你项目中用到的依赖都计算出来,然后给到 node 的 module 模块。

#10 的这个修改还要注意 esm 和 cjs 的问题,nodejs 项目需要 patch 修改一下

OP 现在感觉怎么样了,我们也有两个项目用了 nx ,感觉有点受到限制,我们技术栈是 Angular 和 Nestjs ,nx 把 angular 的 cli 包装了,然后一点也没用 nestjs 的 cli ,这导致 angular cli 更新了或者想用 nest cli 的一些特性就很麻烦,心里容易没谱不知道下一次更新又会有什么问题。

没有用 nx ,的确限制很大。
现在已经落地使用的是 turborepo ,灵活落地快,配置很简单(几乎不需要啥配置)。

turborepo 做多任务(构建,开发等)管理,它会处理任务之间的依赖的,同时利用缓存,减少你总任务的处理时间。
比如你运行 turbo run build lint test --filter="{./packages/*}[HEAD~0]" 他会运行所有 packages 目录下的,git 上有更改的包的 build lint test 任务。在运行 build 任务的时候,如果你在 turbo.json 配置文件中声明了 build 任务依赖处理,那么它会计算这个包的依赖关系,先去构建这个包所依赖的包的 build 任务。

整个前端项目的基础设施实现利用了 turborepo, changeset, pnpm 来完成的。pnpm 方便做 workspace 的管理,以及在发包的时候,可以运行 pnpm publish -r --report-json 来发布那些有新的版本还没有发布过的包,同时生成 json 文件报告。通过 changeset 来管理包的版本,更新更个 package 文件上的版本。

是的,我作为一名IT技术人员,对Nx前端build系统以及Node.js都有一定的了解和使用经验。Nx是一个强大的构建工具,特别适用于Monorepo环境中的JavaScript和TypeScript项目,它提供了一系列功能来帮助开发者高效管理代码库。

以下是一个简单的使用Nx进行前端项目构建的示例:

首先,你需要确保已经安装了Nx CLI。可以通过以下命令进行安装:

npm install -g nx

然后,你可以创建一个新的Nx Workspace:

nx new my-workspace

在这个Workspace中,你可以添加一个新的Node.js项目,例如一个后端服务:

nx generate @nrwl/node:application backend

这个命令会在apps目录下创建一个名为backend的Node.js项目,包含基本的项目结构和配置文件。

接下来,你可以使用Nx的构建系统来构建这个项目:

nx build backend

Nx的构建系统支持增量构建,即只构建和测试那些自上次构建以来发生变化的部分,从而大大提高构建速度。此外,Nx还提供了丰富的插件生态和社区支持,可以满足各种开发需求。

如果你是一名使用Node.js的开发者,Nx无疑是一个值得尝试的前端构建系统。

回到顶部