Nx 介绍: 基于插件的单一代码库(Monorepo)构建系统

文章目录

  • 前言
  • 一、Nx 设计理念
  • 二、Nx 核心概念
    • 1. 项目图 - Project graph
    • 2.元数据驱动 - Metadata driven
    • 3. 任务图 - Task graph
    • 4.受影响指令 Affected commands
    • 5. 计算缓存 - Computation hashing and caching
  • 三、常用指令
    • 1. 创建工作区
    • 2.代码生成
    • 3. 执行任务
    • 4. 项目图
    • 5. 已安装插件
  • 目录结构
  • 参考


前言

Nx is a smart, fast and extensible build system with first class monorepo support and powerful integrations.

Nx 是一个智能的、快速的、可扩展的,单代码库优先和强大的插件集成的构建系统。


一、Nx 设计理念

Nx的设计理念与Visual Studio Code类似。VSCode是一个强大的文本编辑器,即使你不安装任何扩展,你也可以使用它非常高效。VSCode的扩展生态系统可以真正提高你的工作效率。

Nx的核心是通用的、简单的和透明的。Nx插件尽管对许多项目非常有用,但完全是可选的。Nx是一个VSCode的构建工具,具有强大的核心,由元数据驱动,并通过插件进行扩展。

二、Nx 核心概念

1. 项目图 - Project graph

项目图用于反映库中的源代码和所有不在库中创建的外部依赖项(如Webpack、React、Angular等)。Nx会存储缓存的项目图,所以它只会重新分析你修改过的文件。
在这里插入图片描述

2.元数据驱动 - Metadata driven

Nx中的所有东西都带有元数据,以支持工具性。默认值、验证、自动完成工作等等都在模式中定义,而不是在代码中定义。

3. 任务图 - Task graph

Nx基于项目图来创建任务图。每当你运行任何东西时,Nx都会从项目图中创建一个任务图,然后执行该图中的任务。但任务图与项目图不要求相同结构如,运行 nx run-many --target=test --projects=app1,app2,lib
生成的任务图:尽管app1依赖于 lib,但 app1:test不依赖于lib:test。这意味着两个任务可以并行运行,提高整体执行时间:在这里插入图片描述

4.受影响指令 Affected commands

随着工作空间的增长,重新测试所有项目会变得太慢。 为了解决这个问题,Nx实现了代码变更分析,以获得需要重新测试的最小项目集。
nx affected --target=test
在这里插入图片描述

5. 计算缓存 - Computation hashing and caching

Nx支持计算缓存,不会重复执行相同的计算。 这个计算缓存是可插拔的,并且可以分布式运行。
Nx按照正确的顺序运行任务图中的任务。在运行任务之前,Nx会计算它的计算散列。只要计算哈希值相同,运行任务的输出也相同。如果 Nx 没有找到这个计算,Nx 运行这个任务,完成后,它获取输出和终端输出,并将其存储在本地(如果是远程配置的话),所有这些对用户都是透明的。
在这里插入图片描述

三、常用指令

1. 创建工作区

npx create-nx-workspace@latest
指定创建参数 -preset 预设:
npx create-nx-workspace --preset=core

2.代码生成

nx generate <collection:generator>

参数:dryRun ,只展示结果给,不实际生成本地文件

3. 执行任务

nx run <target> [options]

4. 项目图

nx graph

5. 已安装插件

nx list [plugin]

目录结构

myorg/
├── apps/
├── libs/
├── tools/
├── workspace.json
├── nx.json
├── package.json
└── tsconfig.base.json
  • apps/ 应用源码,建议尽量保持应用源码简洁,通用逻辑放到库源码中
  • libs/ 库源码
  • tools/ 常用工具,如 数据库脚本、工作区代码生成器脚本等
  • workspace.json 列出当前工作区的所有项目(可选)
  • nx.json Nx Cli的配置文件,如缓存及任务执行设置
  • tsconfig.base.json TypeScript全局设置

参考

  • Nx官网文档
  • Monorepo, 意思是在版本控制系统的单个代码库里包含了许多项目的代码。这些项目虽然有可能是相关的,但通常在逻辑上是独立的,并由不同的团队维护。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://xiahunao.cn/news/1617896.html

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

nx入门

1.创建草图 &#xff08;1&#xff09;选择平面 &#xff08;2&#xff09;利用尺寸约束和几何约束创建草图&#xff0c;注意缺乏约束和过约束的问题 2.完成草图&#xff0c;进行拉伸、旋转、修剪、打孔等操作 草图完成&#xff0c;选择拉伸或者旋转 修剪操作 &#xff08;1…

什么是 TF-IDF 算法?

简单来说&#xff0c;向量空间模型就是希望把查询关键字和文档都表达成向量&#xff0c;然后利用向量之间的运算来进一步表达向量间的关系。比如&#xff0c;一个比较常用的运算就是计算查询关键字所对应的向量和文档所对应的向量之间的 “相关度”。 简单解释TF-IDF TF &…

PYNQ-z2 联网

PYNQ-z2 联网 这个教程会教你如何使PYNQ-z2联网。 首先ping一下外网&#xff0c;看看PYNQ板是否能联网 ping www.baidu.com如果没有响应&#xff0c;右击屏幕右下方的网络&#xff0c;选择“打开网络和Internet设置” 点击更改适配器选项 选择你正在使用的网络 点击属性&am…

PYNQ-Z2学习——启动PYNQ,安装需要的软件和系统

Day1 需要的硬件和软件 硬件 PYNQ-Z2开发板Micro-SD卡读卡器安卓线网线 软件 Vivado虚拟机Ubuntu 启动PYNQ 下载PYNQ-Z2-v2.3镜像文件压缩包&#xff0c;并解压缩 下载安装win32diskimager 通过win32diskimager将光盘映像文件写入SD卡中&#xff0c;在写入完之后会弹出是…

安装并使用Pynq-Z2官方镜像

一、首先一张 microSD卡&#xff0c;一个 microSD卡读卡器&#xff0c;一根网线&#xff0c;一个 路由器。 镜像网址链接 Releases Xilinx/PYNQ GitHub 选择PYNQ-Z2 v2.7.0 SDCard image 安装 Win32DiskImager 安装 DiskGenius 通过DiskGenius对新的sd卡进行格式化 通过W…

PYNQ-z2的学习过程

1. PYNQ-Z2 如图&#xff1a;先学习10分钟轻松上手PYNQ &#xff08;http://www.digilent.com.cn/studyinfo/67.html&#xff09;这个是z1的不过都能学习&#xff0c;大致差不多。 视频内容如下&#xff1a; v PYNQ-Z2 映像文件img 写入SDcard&#xff0c;http://www.pynq.io/…

Vivado中添加Pynq-Z2板卡文件

2023.5.31 今天在Vivado中导入pynq_z2板卡文件废了好些功夫&#xff0c;正好在这里里分享一下&#xff0c;希望对遇到相同困难的人有所帮助。 在xilinx官网的pynq-z2板卡文件已经失效&#xff0c;所以我自己去找了一个文件 主要的的步骤也比较简单&#xff1a;首先复制板卡…

【pynq-z2】初始配置

1. 官方手册写的挺全&#xff0c;了解一下 PYNQ-Z2 设置指南 PYNQ-Z2 Reference Manual v1.0 pynq&#xff08;Python On Zynq&#xff09;z1和z2区别不大&#xff0c;芯片一样 生产商&#xff0c;z1是Digilent、z2是Tulz2有树莓派接口z2芯片上有散热片&#xff08;看起来像…

PYNQ-Z2启动/网络配置

下载PYNQ-Z2_v2.7.0镜像 链接&#xff1a;https://pan.baidu.com/s/1n5EghzOs7En6yQruLGTKbQ?pwd2f00 提取码&#xff1a;2f00 解压PYNQ-Z2_v2.7.0镜像使用烧录镜像至SD卡 完成后关闭软件&#xff0c;如果有下图弹出&#xff0c;一定要点“否”&#xff0c;即烧录成功&…

PYNQ-Z2开发板

PYNQ-Z2开发板第一次使用&#xff08;废弃&#xff09; 我这也是第一次用我也边写边弄&#xff0c;有不好的地方也不要怪我&#xff0c;因为我都不一定会写完&#xff0c;见谅。 准备 PYNQ-Z2开发板 一根百兆/千兆网线 一根Micro USB线 至少8GB大小的Micro SD卡和读卡器 下载安…

Vivido添加pynq-Z2开发板

一、下载pynq-z2开发板文件&#xff0c;下载地址&#xff1a;https://www.tulembedded.com/FPGA/ProductsPYNQ-Z2.html 二、将下载的文件解压到vivado安装的位置 如果boards目录下面没有boards_files的文件&#xff0c;那就自己创建一个&#xff0c;然后把pynq-z2解压文件夹放在…

极空间Z2s搭建思源笔记

docker下载zsource/siyuan 镜像 使用自定义拉取镜像。目前极空间docker镜像不能选版本下载&#xff0c;所以需要通过自定义拉取对应zsource/siyuan镜像版本。由于z2s芯片是arm架构&#xff0c;我们选用最新arm架构版本v2.4.9-arm64。zsource/siyuan:v2.4.9-arm64 挂载路径至zso…

PYNQ-Z2点亮led灯

PYNQ-Z2点亮led灯 调用overlays 找到base.py&#xff0c;复制到自己需要的目录 调用 from pynq.overlays.base import BaseOverlay base BaseOverlay("base.bit")找到pynq自带器件库 将led.py复制到自己需要的地方。 pynq-z2含有4个led灯 可以采用3种方式&…

PYNQ Z2一:板子连接与测试

PYNQ Z2一&#xff1a;板子连接与测试 PYNQ Z2初体验开发板的外观连接板子制作镜像&#xff0c;写入SD卡连接电脑使用预处理文件快速设置IP PYNQ Z2初体验 今天刚到手了一块PYNQ-Z2&#xff0c;确认过眼神&#xff0c;是块好板子&#xff0c;话不多说&#xff0c;先来测试一下…

PYNQ-Z2初识

基本框架&#xff1a; Zynq是基于双核ARM Cortex-A9处理器(称为处理系统或PS-Processing System)的SOC&#xff0c;集成了FPGA结构(称为可编程逻辑或PL-)。PS子系统包括许多专用的外设(内存控制器、USB、Uart、IIC、SPI等)&#xff0c;并且可以在PL覆盖中通过附加的硬件IP进行扩…

【雪天鱼】(2) PYNQ_Z2从Vivado到SDK开发流程

文章目录 一、Vivado中手动添加Pynq-Z2板卡文件二、Block Design2.1 新建工程2.2 Block design 三、SDK开发3.1 Create Platform Project3.2 Create application project 四、下载验证 Date: 2023/3/23 Author: 雪天鱼 一、Vivado中手动添加Pynq-Z2板卡文件 在xilinx官网下载…

PYNQ-Z2零基础学习详解

本人在学习PYNQ&#xff0c;想用自己的理解来解释零基础学习过程中的一些坑&#xff0c;同时采用非官方语言来介绍如何使用PYNQ。大家有什么问题可以给我留言。也可以关注微信公众号 三丰杂货铺 一起讨论。 简介&#xff1a;PYNQ是“python productivity for zynq”的缩写…

sony z2 android 5.0,索尼Xperia Z2 5.0 root教程_索尼Z2获取5.0系统的root

来说一下咱们的索尼Xperia Z2手机的5.0系统的root&#xff0c;因为现在很多机友的系统是5.0的&#xff0c;可是对于5.0的系统很多机友还不知道如何进行root操作&#xff0c;之前的针对4.4的系统的root方法肯定是用不到5.0的系统上的&#xff0c;因此需要专门的针对5.0的root软件…

超详细pynq-z2入门

pynq-z2入门 文章目录 0.pynq架构介绍1.下载pynq-z2镜像2.镜像烧录3.将pc端的IP地址改为192.168.2.1004.开发板跳线帽连接5.开发板上电6. 安装好jupyter环境7.通过IP地址192.168.2.99或者pynq:9090连接开发板8.访问板子的文件系统8. 通过samba传输文件 pynq-z2的一些基本信息参…

机械革命z2黑苹果双系统改造计划

机械革命z2黑苹果改造计划 原来的系统硬盘才256G实在太小了&#xff0c;趁固态便宜搞了一块大华C900Plus-b 1T固态&#xff0c;加上之前电脑里后加的一块海康威视c2000pro 1T准备搞一个winmac双系统生产力工具 黑苹果效果展示 黑苹果的详细教程b站上有很多&#xff0c;也可以…