自NX 16.0上的上一个版本博客以来,我们已经启动了许多功能,因此我们涵盖了此博客的主要功能!
请确保还为我们的NX 16.5直播标记您的日历!我们将重点介绍您在此处看到的功能,并实时提出任何问题!请按照链接来安排我们上线时的通知:
通过标签定位任务
我们的第一个主要功能实际上来自社区。 NX现在已经支持了您的项目中的标签属性。希望您的前端应用程序取决于任何特定于后端的代码。
使用此新功能,您可以将--tag
选项添加到koude1和koude2命令中以指定到nx以仅运行匹配给定标签的项目的命令。
NextJS 13支持
React Server组件,和新的NextJS应用程序路由器都在这里,NX在这里支持它们。我们添加了对Next的最新版本的支持 - 配有发电机和执行者。我们还确保我们的koude3 NextJS plugin可以使您可以从工作区中的其他项目中导入,同时仍在使用NextJS构建脚本,这两者都可以在工作空间中使用我们的执行者在集成的MonorePo方法中以及使用的执行者以及使用基于包装的方法,它只是直接使用next dev
命令来启动其开发服务器。
还可以通过--turbo
命令对新的Turbopack Builder选项进行内置支持,例如:nx serve webapp --turbo
我们还为独立的NextJS应用程序推出了npx create-nx-workpace
的新预设。使用命令:npx create-nx-workspace@latest --preset=nextjs-standalone
或使用交互提示来查看它:
过去一个月,我们已经在NX工作区中的下一个开发添加了几个视频,因此,如果您要在接下来寻找更多信息,请务必检查它们!
新的NX食谱!!!
您是否知道我们维护旨在用作不同NX工作区的示例的a set of Nx workspaces?
我们最近添加了示例存储库:
- 快速 + mongo
- 快速 + Postgres
- 快速 + redis
- NextJS + TRPC
- 混音
- 无服务器 +快速 + Planetscale
请在https://github.com/nrwl/nx-recipes上查看它,并在评论中告诉我们是否还有更多食谱,或者您想查看从任何现有食谱中制作的视频!
Angular 16支撑和迁移
Angular正在继续发布新的和令人兴奋的功能的模式 - 在NX 16.1中,我们增加了对Angular 16的支持,包括对NGRX Generators和Cypress支持的更新。
。像往常一样,我们将迁移到最新的Angular版本,以覆盖您的代码库,以进行Angular 16的任何破坏更改。
,如果您错过了它,nx不再与您的Angular版本相关 - NX的最新版本现在将始终始终为support all currently LTS versions of Angular11,这意味着您不必升级您的Angular版本就可以获取所有这些最新的NX特征。请务必使用--interactive
标志来利用此功能:nx migrate latest --interactive
。您可以在our docs for choosing optional packages to apply中找到更多详细信息。
新的verdaccio
支持!
@nx/js
软件包现在包括一个新的setup-verdaccio
发电机以及verdaccio
executor!
运行nx g setup-verdaccio
现在将在您的工作区中添加一个新的local-registry
目标,该目标将使用新的verdaccio
opecutor。
要启动本地注册表,在一个终端中运行命令nx local-registry
,然后您可以像往常一样通过npm publish
之类的命令发布,而不是将软件包发布到NPM注册表中,而是将这些软件包仅在本地发布到本地。 - 运行注册表!
当local-registry
流程运行时,您还可以安装发布到本地注册表的软件包。
这些工具应特别有助于对发布软件包的本地测试,以帮助支持手册和自动测试!
用NX创建自己的CLI
在各种技术中,使用命令行界面(CLI)来创建新工作区是很常见的。反应有一个,角,vue,vite等也有一个。不过
现在,NX插件作者有可能创建一个所谓的“预设”来控制整个NX工作区结构。发布后,可以使用--preset
标志:npx create-nx-workspace myapp --preset=@my/plugin
调用它。 Qwik-Nx就是一个例子。
但是,许多作者宁愿希望拥有更多的“品牌”体验。喜欢能够用以下方式调用上一个示例:
npx create-qwik-nx myapp
为了满足这种需求,在16.5中,我们使用新的create-package
发电机发货,该发电机允许您使用NX插件添加和运送此类“ CLI软件包”。
您可以立即使用CLI软件包创建一个新的NX插件工作区:
npx create-nx-plugin my-own-cli --create-package-name=create-my-own-cli-app
或使用:
或将其添加到现有的NX插件工作区
nx g @nx/plugin:create-package <cli name> --project=<existing plugin name> --e2eProject e2e
新的externalDependencies
输入类型
nx现在支持一种新的输入类型:externalDependencies
添加到现有输入类型:filesets
,runtime
输入和env
变量。
默认情况下,NX将采取防御性立场,假设所有软件包都会影响您的命令,这意味着在哈希任务的依赖项时都会考虑所有外部依赖。
新的externalDependencies
输入类型允许您为给定命令指定一组特定的外部依赖关系,因此您可以配置任务以更准确地反映其输入。
例如,如果使用publish-package
目标,该目标使用lerna publish
的command
进行发布,则可以指定该特定输入的唯一外部依赖性是lerna
:
{
"name": "mylib",
// ...
"targets": {
"publish-package": {
"command": "lerna publish",
"inputs": [{ "externalDependencies": ["lerna"] }]
}
}
}
这样,您可以自由地更改其他不影响此任务的依赖项,而无需使您的任务缓存运行。
新的@nx/dependency-checks
Eslint规则
我们添加了一个新的@nx/dependency-checks
棉绒规则,以帮助检测包装的依赖项时检测任何问题。
此规则将分析您的源代码,以确定您在此特定软件包中使用的任何依赖关系,并将在您的项目的package.json
文件中捕获任何缺失的依赖项,不匹配的版本和未使用的依赖项。
更好的是,此规则支持--fix
选项自动解决所发现的任何问题 - 使其成为自动化依赖关系的绝佳工具。
迁移您的NX工作区后,您应该可以访问此皮棉规则。要将其打开,您需要调整lint
文件中的lint
目标,以包括您的package.json
文件,例如:
{
"name": "webapp",
// ...
"targets": {
// ...
"lint": {
"executor": "@nx/linter:eslint",
"outputs": [
"{options.outputFile}"
],
"options": {
"lintFilePatterns": [
"apps/webapp/**/*.{ts,tsx,js,jsx}",
"apps/webapp/package.json" // here!
]
}
}
}
}
然后在您的root .eslintrc.json
文件中,您需要打开JSON文件的规则:
{
"root": true,
"ignorePatterns": ["**/*"],
"plugins": ["@nx"],
"overrides": [
// ...
{
"files": ["*.json"],
"parser": "jsonc-eslint-parser",
"rules": {
"@nx/dependency-checks": "error"
}
}
]
}
现在,您应该能够通过nx run-many --target=lint
运行Linter,以在任何软件包中捕获任何错误,并且您也可以nx run-many --target=lint --fix
自动解决所有错误。
nx brrrrrr
nx继续变得更快!
我们最大的速度提高来自将您的任务放入NX守护程序。守护程序过程是指在后台连续运行的过程。
由于守护程序在命令之间持续存在,因此我们能够拥有更多的工作中的工作,我们在NX 16.3!
中添加了一个工作。在NX 16.4中,我们还搬到了基于生锈的观察者中,以进一步提高性能。我们已经开始在先前的版本中迁移一些更强化的NX的性能密集型计算,但是我们很高兴能将更多NX的核心带入Rust,并看到更多这些性能增长!
自去年10月的NX上一次基准测试以来,我们以每个命令为276.2ms的NX时,这些速度提升现在使我们降至149.3ms,几乎使我们的速度翻了一番!
!您可以看到我们的结果和基准的细节 - 甚至在this repo中为自己运行基准。
NX控制台进行了修改
nx控制台在Vscode和Jetbrains(Intellij/webstorm)IDES中均具有新的油漆!
作为重新设计的一部分,我们还将网络浏览量移至LIT框架 - 查看此视频中的所有最新更新:
NX ChangElog推出了
最后但并非最不重要的一点是,我们已经启动了a new changelog到我们的文档网站!
此ChangElog包含指向所有主要版本和次要版本的所有发行说明的链接,以及与补丁版本的链接。我们确保还包括每个版本带来的任何贬值或破坏更改。
包起来
这就是伙计们!我们刚刚开始在NX上进行新的开发迭代,因此请务必订阅我们的YouTube频道以获取新功能Land时获得更新!直到下一次,请继续努力!
了解更多
- ð§ Nx Docs
- ð©âð» Nx GitHub
- ð¬ Nx Community Slack
- ð¹ Nx Youtube Channel
- ð¥ Free Egghead course
- ð Speed up your CI