NX仍支持创建多应用吗?新版结构与旧版差异疑问
NX多应用创建指南(适配新版仓库结构)
NX完全支持创建多应用,只是新版对仓库结构做了更清晰的分类,不同类型仓库的应用存放位置和创建方式略有不同,下面针对你的疑问逐一说明:
1. 核心说明:为什么没看到apps目录?
旧版NX默认生成apps/libs结构,新版将仓库分为三种类型,apps目录主要对应**Integrated Monorepo(集成仓库)**的应用存放,另外两种类型有不同的组织方式:
- 集成仓库:最接近旧版结构,手动创建应用后会自动生成
apps目录 - 包仓库(Package-Based):应用以独立包形式存放在
packages目录 - 独立仓库(Standalone):本身就是单应用仓库,无需
apps目录
2. 不同仓库类型创建多应用的具体步骤
集成仓库(推荐多应用场景,匹配旧版习惯)
这是最适合管理frontend和admin两个应用的模式,有两种创建路径:
路径一:创建仓库时直接生成第一个应用
npx create-nx-workspace@latest myorg
执行后按提示选择:
- 仓库类型选
Integrated Monorepo - 选择你用的框架(比如React/Angular/Vue)
- 输入第一个应用名称(比如
frontend)
创建完成后自动生成apps/frontend目录,再执行命令生成admin应用:
nx g @nx/react:app admin # 框架对应替换成你用的,比如@nx/angular:app
路径二:先创建空白集成仓库,再手动生成应用
你之前用--preset=ts创建的是空白集成仓库,所以没有自动生成应用和apps目录,补全步骤即可:
# 安装对应框架的生成器(以React为例) npm install @nx/react # 创建frontend应用 nx g @nx/react:app frontend # 创建admin应用 nx g @nx/react:app admin
执行后会自动生成apps目录,两个应用分别放在apps/frontend和apps/admin下,libs目录依然用来创建共享库(比如公共组件、工具函数),和旧版逻辑一致。
包仓库(Package-Based)
如果你的frontend和admin需要独立发布为npm包,选这种模式,应用存放在packages目录:
npx create-nx-workspace@latest myorg --preset=package-based # 安装框架生成器 npm install @nx/react # 创建frontend应用到packages目录 nx g @nx/react:app frontend --directory=packages/frontend # 创建admin应用到packages目录 nx g @nx/react:app admin --directory=packages/admin
独立仓库(Standalone)
这种是单应用仓库,本身就是一个应用,不适合管理多应用场景。如果已经创建了独立仓库,建议转成集成仓库再添加第二个应用,或者直接重新创建集成仓库。
3. 关于旧课程与新版差异的说明
2022年的课程基于旧版NX,新版NX对仓库结构做了模块化拆分,将原有的单一结构细化为三种仓库类型,核心功能(应用/库创建、任务调度、缓存)依然保留,但组织方式更灵活,所以会出现内容差异。
内容的提问来源于stack exchange,提问作者Richard77
相关产品推荐
相关产品推荐

