nx 19.6.0-canary.20240726-b3c67de → 19.6.0-canary.20240730-acd9bb7
Sign up to get free protection for your applications and to get access to all the features.
- package/package.json +12 -12
- package/release/changelog-renderer/index.js +5 -4
- package/src/command-line/affected/affected.js +1 -1
- package/src/command-line/examples.js +4 -0
- package/src/command-line/release/changelog.js +1 -0
- package/src/command-line/release/config/config.js +4 -0
- package/src/command-line/release/publish.js +3 -1
- package/src/command-line/release/utils/shared.js +1 -0
- package/src/command-line/run/run-one.js +1 -1
- package/src/command-line/run-many/run-many.js +1 -1
- package/src/command-line/yargs-utils/shared-options.d.ts +1 -0
- package/src/command-line/yargs-utils/shared-options.js +5 -0
- package/src/commands-runner/create-command-graph.js +4 -2
- package/src/generators/utils/project-configuration.js +41 -11
- package/src/native/nx.wasm32-wasi.wasm +0 -0
- package/src/utils/command-line-utils.d.ts +1 -0
- package/src/utils/package-json.d.ts +2 -9
package/package.json
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
{
|
2
2
|
"name": "nx",
|
3
|
-
"version": "19.6.0-canary.
|
3
|
+
"version": "19.6.0-canary.20240730-acd9bb7",
|
4
4
|
"private": false,
|
5
5
|
"description": "The core Nx plugin contains the core functionality of Nx like the project graph, nx commands and task orchestration.",
|
6
6
|
"repository": {
|
@@ -71,7 +71,7 @@
|
|
71
71
|
"yargs-parser": "21.1.1",
|
72
72
|
"node-machine-id": "1.1.12",
|
73
73
|
"ora": "5.3.0",
|
74
|
-
"@nrwl/tao": "19.6.0-canary.
|
74
|
+
"@nrwl/tao": "19.6.0-canary.20240730-acd9bb7"
|
75
75
|
},
|
76
76
|
"peerDependencies": {
|
77
77
|
"@swc-node/register": "^1.8.0",
|
@@ -86,16 +86,16 @@
|
|
86
86
|
}
|
87
87
|
},
|
88
88
|
"optionalDependencies": {
|
89
|
-
"@nx/nx-darwin-x64": "19.6.0-canary.
|
90
|
-
"@nx/nx-darwin-arm64": "19.6.0-canary.
|
91
|
-
"@nx/nx-linux-x64-gnu": "19.6.0-canary.
|
92
|
-
"@nx/nx-linux-x64-musl": "19.6.0-canary.
|
93
|
-
"@nx/nx-win32-x64-msvc": "19.6.0-canary.
|
94
|
-
"@nx/nx-linux-arm64-gnu": "19.6.0-canary.
|
95
|
-
"@nx/nx-linux-arm64-musl": "19.6.0-canary.
|
96
|
-
"@nx/nx-linux-arm-gnueabihf": "19.6.0-canary.
|
97
|
-
"@nx/nx-win32-arm64-msvc": "19.6.0-canary.
|
98
|
-
"@nx/nx-freebsd-x64": "19.6.0-canary.
|
89
|
+
"@nx/nx-darwin-x64": "19.6.0-canary.20240730-acd9bb7",
|
90
|
+
"@nx/nx-darwin-arm64": "19.6.0-canary.20240730-acd9bb7",
|
91
|
+
"@nx/nx-linux-x64-gnu": "19.6.0-canary.20240730-acd9bb7",
|
92
|
+
"@nx/nx-linux-x64-musl": "19.6.0-canary.20240730-acd9bb7",
|
93
|
+
"@nx/nx-win32-x64-msvc": "19.6.0-canary.20240730-acd9bb7",
|
94
|
+
"@nx/nx-linux-arm64-gnu": "19.6.0-canary.20240730-acd9bb7",
|
95
|
+
"@nx/nx-linux-arm64-musl": "19.6.0-canary.20240730-acd9bb7",
|
96
|
+
"@nx/nx-linux-arm-gnueabihf": "19.6.0-canary.20240730-acd9bb7",
|
97
|
+
"@nx/nx-win32-arm64-msvc": "19.6.0-canary.20240730-acd9bb7",
|
98
|
+
"@nx/nx-freebsd-x64": "19.6.0-canary.20240730-acd9bb7"
|
99
99
|
},
|
100
100
|
"nx-migrations": {
|
101
101
|
"migrations": "./migrations.json",
|
@@ -25,10 +25,11 @@ const defaultChangelogRenderer = async ({ projectGraph, changes, releaseVersion,
|
|
25
25
|
}
|
26
26
|
}
|
27
27
|
}
|
28
|
+
let relevantChanges = changes;
|
28
29
|
// workspace root level changelog
|
29
30
|
if (project === null) {
|
30
31
|
// No changes for the workspace
|
31
|
-
if (
|
32
|
+
if (relevantChanges.length === 0) {
|
32
33
|
if (dependencyBumps?.length) {
|
33
34
|
applyAdditionalDependencyBumps({
|
34
35
|
markdownLines,
|
@@ -42,7 +43,7 @@ const defaultChangelogRenderer = async ({ projectGraph, changes, releaseVersion,
|
|
42
43
|
}
|
43
44
|
return markdownLines.join('\n').trim();
|
44
45
|
}
|
45
|
-
const typeGroups = groupBy(
|
46
|
+
const typeGroups = groupBy(relevantChanges, 'type');
|
46
47
|
markdownLines.push('', createVersionTitle(releaseVersion, changelogRenderOptions), '');
|
47
48
|
for (const type of Object.keys(changeTypes)) {
|
48
49
|
const group = typeGroups[type];
|
@@ -75,7 +76,7 @@ const defaultChangelogRenderer = async ({ projectGraph, changes, releaseVersion,
|
|
75
76
|
}
|
76
77
|
else {
|
77
78
|
// project level changelog
|
78
|
-
|
79
|
+
relevantChanges = relevantChanges.filter((c) => c.affectedProjects &&
|
79
80
|
(c.affectedProjects === '*' || c.affectedProjects.includes(project)));
|
80
81
|
// Generating for a named project, but that project has no relevant changes in the current set of commits, exit early
|
81
82
|
if (relevantChanges.length === 0) {
|
@@ -128,7 +129,7 @@ const defaultChangelogRenderer = async ({ projectGraph, changes, releaseVersion,
|
|
128
129
|
}
|
129
130
|
if (changelogRenderOptions.authors) {
|
130
131
|
const _authors = new Map();
|
131
|
-
for (const change of
|
132
|
+
for (const change of relevantChanges) {
|
132
133
|
if (!change.author) {
|
133
134
|
continue;
|
134
135
|
}
|
@@ -17,7 +17,7 @@ const find_matching_projects_1 = require("../../utils/find-matching-projects");
|
|
17
17
|
const graph_1 = require("../graph/graph");
|
18
18
|
const all_file_data_1 = require("../../utils/all-file-data");
|
19
19
|
async function affected(command, args, extraTargetDependencies = {}, extraOptions = {
|
20
|
-
excludeTaskDependencies:
|
20
|
+
excludeTaskDependencies: args.excludeTaskDependencies,
|
21
21
|
loadDotEnvFiles: process.env.NX_LOAD_DOT_ENV_FILES !== 'false',
|
22
22
|
}) {
|
23
23
|
perf_hooks_1.performance.mark('code-loading:end');
|
@@ -311,6 +311,10 @@ exports.examples = {
|
|
311
311
|
command: 'show projects --projects api-*',
|
312
312
|
description: 'Show all projects with names starting with "api-". The "projects" option is useful to see which projects would be selected by run-many',
|
313
313
|
},
|
314
|
+
{
|
315
|
+
command: 'show projects --projects tag:ui-*',
|
316
|
+
description: 'Show all projects with a tag starting with "ui-". The "projects" option is useful to see which projects would be selected by run-many',
|
317
|
+
},
|
314
318
|
{
|
315
319
|
command: 'show projects --with-target serve',
|
316
320
|
description: 'Show all projects with a serve target',
|
@@ -296,6 +296,7 @@ async function releaseChangelog(args) {
|
|
296
296
|
let fromRef = args.from ||
|
297
297
|
(await (0, git_1.getLatestGitTagForPattern)(releaseGroup.releaseTagPattern, {
|
298
298
|
projectName: project.name,
|
299
|
+
releaseGroupName: releaseGroup.name,
|
299
300
|
}))?.tag;
|
300
301
|
if (!fromRef && useAutomaticFromRef) {
|
301
302
|
const firstCommit = await (0, git_1.getFirstGitCommit)();
|
@@ -73,6 +73,10 @@ async function createNxReleaseConfig(projectGraph, projectFileMap, userConfig =
|
|
73
73
|
tag: true,
|
74
74
|
};
|
75
75
|
const defaultFixedReleaseTagPattern = 'v{version}';
|
76
|
+
/**
|
77
|
+
* TODO: in v20, make it so that this pattern is used by default when any custom groups are used
|
78
|
+
*/
|
79
|
+
const defaultFixedGroupReleaseTagPattern = '{releaseGroupName}-v{version}';
|
76
80
|
const defaultIndependentReleaseTagPattern = '{projectName}@{version}';
|
77
81
|
const workspaceProjectsRelationship = userConfig.projectsRelationship || 'fixed';
|
78
82
|
const defaultGeneratorOptions = {};
|
@@ -48,7 +48,9 @@ async function releasePublish(args, isCLI = false) {
|
|
48
48
|
* If the user is filtering to a subset of projects or groups, we should not run the publish task
|
49
49
|
* for dependencies, because that could cause projects outset of the filtered set to be published.
|
50
50
|
*/
|
51
|
-
const shouldExcludeTaskDependencies = _args.projects?.length > 0 ||
|
51
|
+
const shouldExcludeTaskDependencies = _args.projects?.length > 0 ||
|
52
|
+
_args.groups?.length > 0 ||
|
53
|
+
args.excludeTaskDependencies;
|
52
54
|
let overallExitStatus = 0;
|
53
55
|
if (args.projects?.length) {
|
54
56
|
/**
|
@@ -169,6 +169,7 @@ function createGitTagValues(releaseGroups, releaseGroupToFilteredProjects, versi
|
|
169
169
|
if (projectVersionData.newVersion !== null) {
|
170
170
|
tags.push((0, utils_1.interpolate)(releaseGroup.releaseTagPattern, {
|
171
171
|
version: projectVersionData.newVersion,
|
172
|
+
releaseGroupName: releaseGroup.name,
|
172
173
|
}));
|
173
174
|
}
|
174
175
|
}
|
@@ -14,7 +14,7 @@ const calculate_default_project_name_1 = require("../../config/calculate-default
|
|
14
14
|
const workspace_configuration_check_1 = require("../../utils/workspace-configuration-check");
|
15
15
|
const graph_1 = require("../graph/graph");
|
16
16
|
async function runOne(cwd, args, extraTargetDependencies = {}, extraOptions = {
|
17
|
-
excludeTaskDependencies:
|
17
|
+
excludeTaskDependencies: args.excludeTaskDependencies,
|
18
18
|
loadDotEnvFiles: process.env.NX_LOAD_DOT_ENV_FILES !== 'false',
|
19
19
|
}) {
|
20
20
|
perf_hooks_1.performance.mark('code-loading:end');
|
@@ -15,7 +15,7 @@ const find_matching_projects_1 = require("../../utils/find-matching-projects");
|
|
15
15
|
const workspace_configuration_check_1 = require("../../utils/workspace-configuration-check");
|
16
16
|
const graph_1 = require("../graph/graph");
|
17
17
|
async function runMany(args, extraTargetDependencies = {}, extraOptions = {
|
18
|
-
excludeTaskDependencies:
|
18
|
+
excludeTaskDependencies: args.excludeTaskDependencies,
|
19
19
|
loadDotEnvFiles: process.env.NX_LOAD_DOT_ENV_FILES !== 'false',
|
20
20
|
}) {
|
21
21
|
perf_hooks_1.performance.mark('code-loading:end');
|
@@ -18,6 +18,7 @@ export interface RunOptions {
|
|
18
18
|
dte: boolean;
|
19
19
|
batch: boolean;
|
20
20
|
useAgents: boolean;
|
21
|
+
excludeTaskDependencies: boolean;
|
21
22
|
}
|
22
23
|
export declare function withRunOptions<T>(yargs: Argv<T>): Argv<T & RunOptions>;
|
23
24
|
export declare function withTargetAndConfigurationOption(yargs: Argv, demandOption?: boolean): Argv<{
|
@@ -66,6 +66,11 @@ function withRunOptions(yargs) {
|
|
66
66
|
describe: 'Rerun the tasks even when the results are available in the cache',
|
67
67
|
type: 'boolean',
|
68
68
|
default: false,
|
69
|
+
})
|
70
|
+
.options('excludeTaskDependencies', {
|
71
|
+
describe: 'Skips running dependent tasks first',
|
72
|
+
type: 'boolean',
|
73
|
+
default: false,
|
69
74
|
})
|
70
75
|
.options('cloud', {
|
71
76
|
type: 'boolean',
|
@@ -36,8 +36,10 @@ const recursiveResolveDeps = (projectGraph, projectName, resolved) => {
|
|
36
36
|
};
|
37
37
|
function createCommandGraph(projectGraph, projectNames, nxArgs) {
|
38
38
|
const dependencies = {};
|
39
|
-
|
40
|
-
|
39
|
+
if (!nxArgs.excludeTaskDependencies) {
|
40
|
+
for (const projectName of projectNames) {
|
41
|
+
recursiveResolveDeps(projectGraph, projectName, dependencies);
|
42
|
+
}
|
41
43
|
}
|
42
44
|
const roots = Object.keys(dependencies).filter((d) => dependencies[d].length === 0);
|
43
45
|
const commandGraph = {
|
@@ -17,10 +17,10 @@ const workspace_context_1 = require("../../utils/workspace-context");
|
|
17
17
|
const output_1 = require("../../utils/output");
|
18
18
|
const path_2 = require("../../utils/path");
|
19
19
|
const json_1 = require("./json");
|
20
|
-
const
|
21
|
-
var
|
22
|
-
Object.defineProperty(exports, "readNxJson", { enumerable: true, get: function () { return
|
23
|
-
Object.defineProperty(exports, "updateNxJson", { enumerable: true, get: function () { return
|
20
|
+
const to_project_name_1 = require("../../config/to-project-name");
|
21
|
+
var nx_json_1 = require("./nx-json");
|
22
|
+
Object.defineProperty(exports, "readNxJson", { enumerable: true, get: function () { return nx_json_1.readNxJson; } });
|
23
|
+
Object.defineProperty(exports, "updateNxJson", { enumerable: true, get: function () { return nx_json_1.updateNxJson; } });
|
24
24
|
/**
|
25
25
|
* Adds project configuration to the Nx workspace.
|
26
26
|
*
|
@@ -56,10 +56,35 @@ function addProjectConfiguration(tree, projectName, projectConfiguration, standa
|
|
56
56
|
* @param projectConfiguration - project configuration
|
57
57
|
*/
|
58
58
|
function updateProjectConfiguration(tree, projectName, projectConfiguration) {
|
59
|
-
|
60
|
-
|
59
|
+
if (tree.exists((0, path_2.joinPathFragments)(projectConfiguration.root, 'project.json'))) {
|
60
|
+
updateProjectConfigurationInProjectJson(tree, projectName, projectConfiguration);
|
61
|
+
}
|
62
|
+
else if (tree.exists((0, path_2.joinPathFragments)(projectConfiguration.root, 'package.json'))) {
|
63
|
+
updateProjectConfigurationInPackageJson(tree, projectName, projectConfiguration);
|
64
|
+
}
|
65
|
+
else {
|
61
66
|
throw new Error(`Cannot update Project ${projectName} at ${projectConfiguration.root}. It either doesn't exist yet, or may not use project.json for configuration. Use \`addProjectConfiguration()\` instead if you want to create a new project.`);
|
62
67
|
}
|
68
|
+
}
|
69
|
+
function updateProjectConfigurationInPackageJson(tree, projectName, projectConfiguration) {
|
70
|
+
const packageJsonFile = (0, path_2.joinPathFragments)(projectConfiguration.root, 'package.json');
|
71
|
+
const packageJson = (0, json_1.readJson)(tree, packageJsonFile);
|
72
|
+
if (packageJson.name === projectConfiguration.name ?? projectName) {
|
73
|
+
delete projectConfiguration.name;
|
74
|
+
}
|
75
|
+
if (projectConfiguration.targets &&
|
76
|
+
!Object.keys(projectConfiguration.targets).length) {
|
77
|
+
delete projectConfiguration.targets;
|
78
|
+
}
|
79
|
+
packageJson.nx = {
|
80
|
+
...packageJson.nx,
|
81
|
+
...projectConfiguration,
|
82
|
+
root: undefined,
|
83
|
+
};
|
84
|
+
(0, json_1.writeJson)(tree, packageJsonFile, packageJson);
|
85
|
+
}
|
86
|
+
function updateProjectConfigurationInProjectJson(tree, projectName, projectConfiguration) {
|
87
|
+
const projectConfigFile = (0, path_2.joinPathFragments)(projectConfiguration.root, 'project.json');
|
63
88
|
handleEmptyTargets(projectName, projectConfiguration);
|
64
89
|
(0, json_1.writeJson)(tree, projectConfigFile, {
|
65
90
|
name: projectConfiguration.name ?? projectName,
|
@@ -147,15 +172,20 @@ function readAndCombineAllProjectConfigurations(tree) {
|
|
147
172
|
}
|
148
173
|
else if ((0, path_1.basename)(projectFile) === 'package.json') {
|
149
174
|
const packageJson = (0, json_1.readJson)(tree, projectFile);
|
150
|
-
|
175
|
+
// We don't want to have all of the extra inferred stuff in here, as
|
176
|
+
// when generators update the project they shouldn't inline that stuff.
|
177
|
+
// so rather than using `buildProjectFromPackageJson` and stripping it out
|
178
|
+
// we are going to build the config manually.
|
179
|
+
const config = {
|
180
|
+
root: (0, path_1.dirname)(projectFile),
|
181
|
+
name: packageJson.name ?? (0, to_project_name_1.toProjectName)(projectFile),
|
182
|
+
...packageJson.nx,
|
183
|
+
};
|
151
184
|
if (!rootMap[config.root]) {
|
152
185
|
(0, project_configuration_utils_1.mergeProjectConfigurationIntoRootMap)(rootMap,
|
153
186
|
// Inferred targets, tags, etc don't show up when running generators
|
154
187
|
// This is to help avoid running into issues when trying to update the workspace
|
155
|
-
|
156
|
-
name: config.name,
|
157
|
-
root: config.root,
|
158
|
-
}, undefined, undefined, true);
|
188
|
+
config, undefined, undefined, true);
|
159
189
|
}
|
160
190
|
}
|
161
191
|
}
|
Binary file
|
@@ -29,6 +29,7 @@ export interface NxArgs {
|
|
29
29
|
nxIgnoreCycles?: boolean;
|
30
30
|
type?: string;
|
31
31
|
batch?: boolean;
|
32
|
+
excludeTaskDependencies?: boolean;
|
32
33
|
}
|
33
34
|
export declare function createOverrides(__overrides_unparsed__?: string[]): Record<string, any>;
|
34
35
|
export declare function splitArgsIntoNxArgsAndOverrides(args: {
|
@@ -1,13 +1,6 @@
|
|
1
|
-
import {
|
1
|
+
import { ProjectConfiguration, ProjectMetadata, TargetConfiguration } from '../config/workspace-json-project-json';
|
2
2
|
import { PackageManagerCommands } from './package-manager';
|
3
|
-
export interface NxProjectPackageJsonConfiguration {
|
4
|
-
name?: string;
|
5
|
-
implicitDependencies?: string[];
|
6
|
-
tags?: string[];
|
7
|
-
namedInputs?: {
|
8
|
-
[inputName: string]: (string | InputDefinition)[];
|
9
|
-
};
|
10
|
-
targets?: Record<string, TargetConfiguration>;
|
3
|
+
export interface NxProjectPackageJsonConfiguration extends Partial<ProjectConfiguration> {
|
11
4
|
includedScripts?: string[];
|
12
5
|
}
|
13
6
|
export type ArrayPackageGroup = {
|