`nx target`和原生命令有什么区别?

问题描述 投票:0回答:1

我正在使用

nx
来管理 monorepo,发现
nx
项目有很多目标,例如
@nx/eslint:lint

此目标可以在

project.json
中定义,由
nx
管理:

"targets": {
    "lint": {
      "executor": "@nx/eslint:lint",
      "inputs": [
        "{projectRoot}/**/*.ts"
      ],
    ...

我还可以添加

eslint
对 package.json 的依赖并添加如下脚本:

scripts: {
   "lint": "eslint src"
   ...

我想知道使用

@nx/eslint:lint
和原生
eslint
命令之间有什么根本区别。

node.js monorepo nx-monorepo
1个回答
0
投票

首先,通过在

package.json
中添加脚本,您可以在 monorepo 中的所有代码上运行 eslint,但您可以一次在 monorepo 的每个包上运行它。

这样做的一个好处是,当您一次在每个包上运行它时,您可以利用 NX 缓存,如果包内的代码没有更改,它将重新使用成功的结果。但是,还有其他原因。

因此,使用目标可以让您连接 NX 提供的所有工具,以便能够在 monorepo 中的所有包上一致且智能地运行

lint


其次,您可以使用 JSON 文件来配置该目标的运行方式。

@nx/eslint:lint
目标支持相当多的选项。请参阅文档:https://nx.dev/nx-api/eslint/executors/lint#options

虽然您可以将所有这些编码为脚本调用中的命令行参数,但当有很多选项时,它会变得很难维护。

© www.soinside.com 2019 - 2024. All rights reserved.