使用NX初始化monorepo项目

846 阅读2分钟

Monorepo意味着把所有项目的所有代码统一维护在一个单一的代码版本库中,nxlerna是两个流行的Monorepo工具,本文主要讲解使用nx初始化前端angular和后端nestjs的项目

初始化monorepo,包含angular&nestjs

注意:本文所有代码适用于Nx 15及以下版本,如果是Nx 16及以上,请使用@nx/而不是@nrwl/,例如使用@nx/angular而不是@nrwl/angular

  1. 使用Integrated Repo初始化项目

    npx create-nx-workspace@latest project-name
    

    弹出选项如下:

    image-20230129091927490.png

  2. 使用standalone angular app选项创建的angular项目目录结构如下:

    image-20230129091700097.png

  3. 使用integrated monorepo选项新建的程序结构如下:(推荐)

    image-20230129092053272.png

指引

  1. 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
    
  2. 如何运行monorepo中的angular项目

    #在package.json中添加以下脚本,ng-demo为对应angular项目名称
    "scripts":{
    	"start":"nx serve ng-demo"
    }
    

    或者直接使用npx运行

    # 在终端中运行以下命令
    npx nx serve ng-demo
    
  3. 如何打包monorepo中的angular项目

    #在package.json中添加以下脚本,ng-demo为对应angular项目名称
    "scripts":{
    	"build":"nx build ng-demo"
    }
    

    或者直接在终端中运行npx命令

    npx nx build ng-demo
    
  4. nx graph查看库之间的依赖关系

  5. 新建angular库,参考链接

    • 新建可单独构建(buildable)的库,库中有独立的package.json文件,

      npx nx g @nrwl/angular:library lib-name --buildable
      
    • 新建不需要单独构建的库

      npx nx g @nrwl/angular:library lib-name
      
  6. 新建angular程序

    nx g @nrwl/angular:app app-name
    
  7. 新建nest application参考链接

    npm install @nrwl/nest --save-dev
    nx g @nrwl/nest:app my-nest-app --frontendProject my-angular-app
    

    新建可运行的nest application,使用--frontendProject指定对应的前端angular项目

  8. 新建nest library

    nx g @nrwl/nest:lib my-nest-lib [--buildable] [--publishable --importPath=@my-workspace/my-nest-lib]
    

    --buildable 可单独构建的

    -- publishable --importPath='xxx' 可发布的

npx补充说明

  1. 如何在不本地安装angular对应版本的情况下,使用指定版本创建angular项目

    # 使用-p命令指定包,并使用该包的命令
    npx -p @angular/cli@latest ng new sample-application --style=less