NX 教程

之前我们有分享过五分钟构建使用任意技术栈构建一个mono repo

在这里是Nx的一些基础知识。帮助你快速掌握它,用起来。

先全局安装一下叭

bash 复制代码
npm add --global nx@latest

!TIP\] 如果要使用Nx的命令,那么必须在Nx的工作空间里 创建一个Nx的工作空间 `npx create-nx-workspace@latest ` 添加Nx到已存在的工作区 `npx nx@latest init` \[!TIP\] 你可以直接用我之前做的模板`nx-vue-cosmopolis`或者`nx-vue-spark`去做测试。

Nx是个啥?

你肯定知道Lerna吧。Nx的背后是Nrwl,Nrwl收购了Lerna。 Lerna is dead - Long Live Lerna

Nx是一个任务运行器。 可以缓存(支持本地缓存和云缓存)你运行任务的结果,同时确保这些任务以正确的顺序运行

🚀 这里有些牛逼的特性

  • 🐥 任务管道化 (以合理的顺序运行你所有library的任务)
  • 🐥 自动包的软链接(假设A libray依赖于B libray,此时B更新了内容,无需做任何事 A的内容也会更新哦)
  • 🐥 缓存你的Task结果 (支持本地缓存和云缓存,让你的应用快的起飞)
  • 🐥 可视化库依赖. (Nx会提供一个在线的可交互的图表,让你分析你的包,哪个依赖了哪个。再也不怕库太多分不清关系啦)
  • 🐥 丰富的插件系统(通过插件,我们可以支持everything).
  • 🐥 管理你的发布 (帮助你发包,自动帮你更新包版本,生成changelog)
  • 🐥 任务并行运行(说白了就是很快)
  • 🐥 Storybook 支持

常用的命令

你可以直接在Nx的工作空间跑nx命令。下面的例子是在nx-vue-cosmopolis 仓库下运行

!TIP\] `nx` 必须在Nx的工作空间下

nx graph

以图表的形式展示工作空间下包之间的依赖关系。

直接运行 nx graph在你的项目里. 然后打开链接。

这里你就很清晰的看见了各个包之间的依赖关系。我们可以得到如下信息。

  1. We can know quickly nx-vue-cosmopolis 依赖 order and products 库。而这两个库同时依赖 shared-ui.
  2. 我们可以知道nx-vue-cosmopolis的类型是 Application 而其他都是 Library. 3.我们可以知道每个应用或者库内部的target (关于target后边会说到)
  3. 我们知道如何去 lint build serve preview serve-static test

nx generate <generator>

使用generator创建修改文件。此处我们以@nx/vue插件为例。

这里有两种方式,你可以看到@nx/vue里面有哪些generator

  1. nx list @nx/vue
  1. official website

从上面的图,我们知道@nx/vue这个插件可以做很多事。

  • 💪 创建一个 vue 应用
  • 💪 创建一个Vue library
  • 💪 创建一个Vu 组件
  • 💪 设置 tailwind 配置
  • 💪 设置 storybook
  • 💪 为你的组件生成 stories

下面我举个例子怎么用它。

bash 复制代码
#1. create a lib named products
nx g @nx/vue:library products --directory=modules/products --unit-test-runner=vitest --bundler=vite

#2. create a component under products lib
nx g @nx/vue:component product-list --directory=modules/products/src/product-list

nx release

协调应用程序和库的版本控制和发布。并生成CHANGELOG.md

首先,你需要通过设置release来定义Nx应该为哪些项目管理release。nx.json中的Projects属性:

json 复制代码
{
    "release": {
    "projects": ["modules/*"]
  },
}

然后运行

bash 复制代码
nx release --first-release --dry-run

🌸 Thanks

希望这些能帮助到大家。如果对你有帮助的话,麻烦给个Star吧⭐️

相关推荐
晚霞的不甘8 分钟前
Flutter for OpenHarmony手势涂鸦画板开发详解
前端·学习·flutter·前端框架·交互
We་ct12 分钟前
LeetCode 73. 矩阵置零:原地算法实现与优化解析
前端·算法·leetcode·矩阵·typescript
晚霞的不甘13 分钟前
Flutter for OpenHarmony 实现动态天气与空气质量仪表盘:从 UI 到动画的完整解析
前端·flutter·ui·前端框架·交互
~小仙女~16 分钟前
组件的二次封装
前端·javascript·vue.js
这是个栗子21 分钟前
AI辅助编程(一) - ChatGPT
前端·vue.js·人工智能·chatgpt
2501_9444480021 分钟前
Flutter for OpenHarmony衣橱管家App实战:预算管理实现
前端·javascript·flutter
Remember_99324 分钟前
Spring 核心原理深度解析:Bean 作用域、生命周期与 Spring Boot 自动配置
java·前端·spring boot·后端·spring·面试
笨蛋不要掉眼泪27 分钟前
Redis持久化解析:RDB和AOF的对比
前端·javascript·redis
心.c30 分钟前
Vue3+Node.js实现文件上传分片上传和断点续传【详细教程】
前端·javascript·vue.js·算法·node.js·哈希算法
We་ct31 分钟前
LeetCode 48. 旋转图像:原地旋转最优解法
前端·算法·leetcode·typescript