@nx/workspace 19.8.0-canary.20240912-b6140d4 → 19.8.0-canary.20240913-5bbaffb

Sign up to get free protection for your applications and to get access to all the features.
package/generators.json CHANGED
@@ -54,6 +54,11 @@
54
54
  "factory": "./src/generators/ci-workflow/ci-workflow#ciWorkflowGenerator",
55
55
  "schema": "./src/generators/ci-workflow/schema.json",
56
56
  "description": "Generate a CI workflow."
57
+ },
58
+ "infer-targets": {
59
+ "factory": "./src/generators/infer-targets/infer-targets",
60
+ "schema": "./src/generators/infer-targets/schema.json",
61
+ "description": "Convert Nx projects to use inferred targets."
57
62
  }
58
63
  }
59
64
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@nx/workspace",
3
- "version": "19.8.0-canary.20240912-b6140d4",
3
+ "version": "19.8.0-canary.20240913-5bbaffb",
4
4
  "private": false,
5
5
  "description": "The Workspace plugin contains executors and generators that are useful for any Nx workspace. It should be present in every Nx workspace and other plugins build on it.",
6
6
  "repository": {
@@ -61,13 +61,13 @@
61
61
  }
62
62
  },
63
63
  "dependencies": {
64
- "@nx/devkit": "19.8.0-canary.20240912-b6140d4",
64
+ "@nx/devkit": "19.8.0-canary.20240913-5bbaffb",
65
65
  "chalk": "^4.1.0",
66
66
  "enquirer": "~2.3.6",
67
67
  "tslib": "^2.3.0",
68
68
  "yargs-parser": "21.1.1",
69
- "nx": "19.8.0-canary.20240912-b6140d4",
70
- "@nrwl/workspace": "19.8.0-canary.20240912-b6140d4"
69
+ "nx": "19.8.0-canary.20240913-5bbaffb",
70
+ "@nrwl/workspace": "19.8.0-canary.20240913-5bbaffb"
71
71
  },
72
72
  "publishConfig": {
73
73
  "access": "public"
@@ -0,0 +1,8 @@
1
+ import { GeneratorCallback, Tree } from '@nx/devkit';
2
+ interface Schema {
3
+ project?: string;
4
+ plugins?: string[];
5
+ skipFormat?: boolean;
6
+ }
7
+ export declare function convertToInferredGenerator(tree: Tree, options: Schema): Promise<GeneratorCallback>;
8
+ export default convertToInferredGenerator;
@@ -0,0 +1,107 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.convertToInferredGenerator = convertToInferredGenerator;
4
+ const devkit_1 = require("@nx/devkit");
5
+ const executor_to_plugin_migrator_1 = require("@nx/devkit/src/generators/plugin-migrations/executor-to-plugin-migrator");
6
+ const enquirer_1 = require("enquirer");
7
+ const generator_utils_1 = require("nx/src/command-line/generate/generator-utils");
8
+ const installed_plugins_1 = require("nx/src/utils/plugins/installed-plugins");
9
+ async function convertToInferredGenerator(tree, options) {
10
+ const generatorCollectionChoices = await getPossibleConvertToInferredGenerators();
11
+ if (generatorCollectionChoices.size === 0) {
12
+ devkit_1.output.error({
13
+ title: 'No inference plugin found. For information on this migration, see https://nx.dev/recipes/running-tasks/convert-to-inferred',
14
+ });
15
+ return;
16
+ }
17
+ let generatorsToRun;
18
+ if (options.plugins && options.plugins.filter((p) => !!p).length > 0) {
19
+ generatorsToRun = Array.from(generatorCollectionChoices.values())
20
+ .filter((generator) => options.plugins.includes(generator.resolvedCollectionName))
21
+ .map((generator) => generator.resolvedCollectionName);
22
+ }
23
+ else if (process.argv.includes('--no-interactive')) {
24
+ generatorsToRun = Array.from(generatorCollectionChoices.keys());
25
+ }
26
+ else {
27
+ const allChoices = Array.from(generatorCollectionChoices.keys());
28
+ generatorsToRun = (await (0, enquirer_1.prompt)({
29
+ type: 'multiselect',
30
+ name: 'generatorsToRun',
31
+ message: 'Which inference plugin do you want to use?',
32
+ choices: allChoices,
33
+ initial: allChoices,
34
+ validate: (result) => {
35
+ if (result.length === 0) {
36
+ return 'Please select at least one plugin.';
37
+ }
38
+ return true;
39
+ },
40
+ })).generatorsToRun;
41
+ }
42
+ if (generatorsToRun.length === 0) {
43
+ devkit_1.output.error({
44
+ title: 'Please select at least one plugin.',
45
+ });
46
+ return;
47
+ }
48
+ const tasks = [];
49
+ for (const generatorCollection of generatorsToRun) {
50
+ try {
51
+ const generator = generatorCollectionChoices.get(generatorCollection);
52
+ if (generator) {
53
+ const generatorFactory = generator.implementationFactory();
54
+ const callback = await generatorFactory(tree, {
55
+ project: options.project,
56
+ skipFormat: options.skipFormat,
57
+ });
58
+ if (callback) {
59
+ const task = await callback();
60
+ if (typeof task === 'function')
61
+ tasks.push(task);
62
+ }
63
+ devkit_1.output.success({
64
+ title: `${generatorCollection}:convert-to-inferred - Success`,
65
+ });
66
+ }
67
+ }
68
+ catch (e) {
69
+ if (e instanceof executor_to_plugin_migrator_1.NoTargetsToMigrateError) {
70
+ devkit_1.output.note({
71
+ title: `${generatorCollection}:convert-to-inferred - Skipped (No targets to migrate)`,
72
+ });
73
+ }
74
+ else {
75
+ devkit_1.output.error({
76
+ title: `${generatorCollection}:convert-to-inferred - Failed`,
77
+ });
78
+ throw e;
79
+ }
80
+ }
81
+ }
82
+ if (!options.skipFormat) {
83
+ await (0, devkit_1.formatFiles)(tree);
84
+ }
85
+ return (0, devkit_1.runTasksInSerial)(...tasks);
86
+ }
87
+ async function getPossibleConvertToInferredGenerators() {
88
+ const installedCollections = Array.from(new Set((0, installed_plugins_1.findInstalledPlugins)().map((x) => x.name)));
89
+ const projectGraph = await (0, devkit_1.createProjectGraphAsync)();
90
+ const projectsConfigurations = (0, devkit_1.readProjectsConfigurationFromProjectGraph)(projectGraph);
91
+ const choices = new Map();
92
+ for (const collectionName of installedCollections) {
93
+ try {
94
+ const generator = (0, generator_utils_1.getGeneratorInformation)(collectionName, 'convert-to-inferred', devkit_1.workspaceRoot, projectsConfigurations.projects);
95
+ if (generator.generatorConfiguration.hidden ||
96
+ generator.generatorConfiguration['x-deprecated']) {
97
+ continue;
98
+ }
99
+ choices.set(generator.resolvedCollectionName, generator);
100
+ }
101
+ catch {
102
+ // this just means that no convert-to-inferred generator exists for a given collection, ignore
103
+ }
104
+ }
105
+ return choices;
106
+ }
107
+ exports.default = convertToInferredGenerator;
@@ -0,0 +1,26 @@
1
+ {
2
+ "$schema": "https://json-schema.org/schema",
3
+ "$id": "InferTargets",
4
+ "title": "",
5
+ "type": "object",
6
+ "description": "Convert Nx projects to use inferred targets.",
7
+ "properties": {
8
+ "project": {
9
+ "type": "string",
10
+ "description": "The project to convert to use inferred targets.",
11
+ "x-priority": "important"
12
+ },
13
+ "plugins": {
14
+ "type": "array",
15
+ "description": "The plugins used to infer targets. For example @nx/eslint or @nx/jest",
16
+ "items": {
17
+ "type": "string"
18
+ }
19
+ },
20
+ "skipFormat": {
21
+ "type": "boolean",
22
+ "description": "Whether to format files.",
23
+ "default": false
24
+ }
25
+ }
26
+ }