我创建了一个名为
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.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,
},
},
},
},
},
},
];
}),
];