Nx 在 nx.json 中添加全局目标

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

我创建了一个名为

check-types
(@project/nx/plugins/check-types": ["plugins/check-types/src/index.ts"]) 的插件,其执行器名为
run

现在,如果我更新项目的

project.json
,我可以毫无问题地运行我的插件:

"targets": {
    "check-types": {
      "executor": "@project/nx/plugins/check-types:run"
    }
  }

但是,我想在

nx.json
级别配置一些东西,当我调用
check-types
时,它会直接调用项目上的插件执行器。

如果可能的话,可以选择基于 ts 的项目,否则我会在插件中处理这部分。

nx-monorepo
1个回答
0
投票

经过相当长一段时间的研究,我发现确实可以添加全局目标,不是从

nx.json
而是通过从插件的createNodesV2文件中
导出
一个名为
index
的常量。

请注意,有一个名为

createNodes
的旧版本仍然可以使用,但正在 正在迁移。因此,在未来的更新中,这个常量可能会再次被调用
createNodes

export const createNodesV2: CreateNodesV2 = [
  '**/project.json',
  (projectConfigurationFiles, _, __): CreateNodesResultV2 =>
    projectConfigurationFiles.map((file): [string, CreateNodesResult] => {
      const normalizedPath = normalizePath(file);
      const jsonConfig = readJsonFile(file);
      const projectRoot = normalizedPath.replace('/project.json', '');
      return [
        file,
        {
          projects: {
            [projectRoot]: {
              ...jsonConfig,
              targets: {
                ...jsonConfig.targets,
                'check-types': {
                  executor: '@project/nx/plugins/check-types:run',
                  options: {
                    cwd: normalizedPath,
                  },
                },
              },
            },
          },
        },
      ];
    }),
];
© www.soinside.com 2019 - 2024. All rights reserved.