Monorepo意味着把所有项目的所有代码统一维护在一个单一的代码版本库中,nx和lerna是两个流行的Monorepo工具,本文主要讲解使用nx初始化前端angular和后端nestjs的项目
初始化monorepo,包含angular&nestjs
注意:本文所有代码适用于
Nx 15及以下版本,如果是Nx 16及以上,请使用@nx/而不是@nrwl/,例如使用@nx/angular而不是@nrwl/angular
-
使用
Integrated Repo初始化项目npx create-nx-workspace@latest project-name弹出选项如下:
-
使用
standalone angular app选项创建的angular项目目录结构如下: -
使用
integrated monorepo选项新建的程序结构如下:(推荐)
指引
-
monorepo安装ng-zorro-antd;#ng-demo为对应angular项目名称 npm install ng-zorro-antd@15.0.0 && npx nx g ng-zorro-antd:ng-add --project ng-demo -
如何运行
monorepo中的angular项目#在package.json中添加以下脚本,ng-demo为对应angular项目名称 "scripts":{ "start":"nx serve ng-demo" }或者直接使用
npx运行# 在终端中运行以下命令 npx nx serve ng-demo -
如何打包
monorepo中的angular项目#在package.json中添加以下脚本,ng-demo为对应angular项目名称 "scripts":{ "build":"nx build ng-demo" }或者直接在终端中运行
npx命令npx nx build ng-demo -
nx graph查看库之间的依赖关系 -
新建
angular库,参考链接-
新建可单独构建(buildable)的库,库中有独立的
package.json文件,npx nx g @nrwl/angular:library lib-name --buildable -
新建不需要单独构建的库
npx nx g @nrwl/angular:library lib-name
-
-
新建
angular程序nx g @nrwl/angular:app app-name -
新建
nest application,参考链接npm install @nrwl/nest --save-dev nx g @nrwl/nest:app my-nest-app --frontendProject my-angular-app新建可运行的
nest application,使用--frontendProject指定对应的前端angular项目 -
新建
nest librarynx g @nrwl/nest:lib my-nest-lib [--buildable] [--publishable --importPath=@my-workspace/my-nest-lib]--buildable 可单独构建的
-- publishable --importPath='xxx' 可发布的
npx补充说明
-
如何在不本地安装
angular对应版本的情况下,使用指定版本创建angular项目# 使用-p命令指定包,并使用该包的命令 npx -p @angular/cli@latest ng new sample-application --style=less