NX 16.5发布!
#javascript #nextjs #nx #verdaccio

自NX 16.0上的上一个版本博客以来,我们已经启动了许多功能,因此我们涵盖了此博客的主要功能!

请确保还为我们的NX 16.5直播标记您的日历!我们将重点介绍您在此处看到的功能,并实时提出任何问题!请按照链接来安排我们上线时的通知:

通过标签定位任务

我们的第一个主要功能实际上来自社区。 NX现在已经支持了您的项目中的标签属性。希望您的前端应用程序取决于任何特定于后端的代码。

使用此新功能,您可以将--tag选项添加到koude1koude2命令中以指定到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或使用交互提示来查看它:

Using interactive prompts to create a nextjs standalone repo.

过去一个月,我们已经在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添加到现有输入类型:filesetsruntime输入和env变量。

默认情况下,NX将采取防御性立场,假设所有软件包都会影响您的命令,这意味着在哈希任务的依赖项时都会考虑所有外部依赖。

新的externalDependencies输入类型允许您为给定命令指定一组特定的外部依赖关系,因此您可以配置任务以更准确地反映其输入。

例如,如果使用publish-package目标,该目标使用lerna publishcommand进行发布,则可以指定该特定输入的唯一外部依赖性是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中均具有新的油漆!

VsCode
IntelliJ

作为重新设计的一部分,我们还将网络浏览量移至LIT框架 - 查看此视频中的所有最新更新:

NX ChangElog推出了

最后但并非最不重要的一点是,我们已经启动了a new changelog到我们的文档网站!

The new Nx Changelog

此ChangElog包含指向所有主要版本和次要版本的所有发行说明的链接,以及与补丁版本的链接。我们确保还包括每个版本带来的任何贬值或破坏更改。

包起来

这就是伙计们!我们刚刚开始在NX上进行新的开发迭代,因此请务必订阅我们的YouTube频道以获取新功能Land时获得更新!直到下一次,请继续努力!

了解更多

更多NX发行说明: