nx 19.3.0-beta.0 → 19.3.0-beta.1
Sign up to get free protection for your applications and to get access to all the features.
- package/bin/post-install.js +1 -3
- package/migrations.json +12 -0
- package/package.json +12 -12
- package/src/command-line/init/implementation/dot-nx/add-nx-scripts.js +38 -13
- package/src/command-line/init/implementation/utils.js +15 -2
- package/src/command-line/release/command-object.js +1 -1
- package/src/command-line/release/utils/git.d.ts +2 -2
- package/src/command-line/release/utils/git.js +19 -11
- package/src/command-line/release/version.d.ts +1 -1
- package/src/command-line/release/version.js +1 -1
- package/src/command-line/yargs-utils/shared-options.d.ts +1 -1
- package/src/core/graph/main.js +1 -1
- package/src/daemon/client/client.js +0 -2
- package/src/executors/run-commands/run-commands.impl.d.ts +6 -2
- package/src/executors/run-commands/run-commands.impl.js +52 -25
- package/src/executors/run-commands/schema.json +5 -2
- package/src/generators/utils/project-configuration.js +1 -1
- package/src/hasher/file-hasher.js +1 -1
- package/src/migrations/update-19-2-4/set-project-name.d.ts +2 -0
- package/src/migrations/update-19-2-4/set-project-name.js +34 -0
- package/src/plugins/js/package-json/create-package-json.js +3 -0
- package/src/plugins/js/project-graph/build-dependencies/target-project-locator.js +9 -4
- package/src/plugins/package-json-workspaces/create-nodes.d.ts +2 -2
- package/src/plugins/package-json-workspaces/create-nodes.js +34 -11
- package/src/plugins/project-json/build-nodes/project-json.d.ts +1 -0
- package/src/plugins/project-json/build-nodes/project-json.js +16 -4
- package/src/project-graph/error-types.js +10 -0
- package/src/project-graph/file-utils.js +1 -1
- package/src/project-graph/plugins/internal-api.js +1 -1
- package/src/project-graph/utils/normalize-project-nodes.js +24 -6
- package/src/project-graph/utils/project-configuration-utils.js +9 -1
- package/src/tasks-runner/create-task-graph.js +32 -33
- package/src/utils/ab-testing.d.ts +1 -1
- package/src/utils/find-matching-projects.js +13 -1
- package/src/utils/package-json.d.ts +1 -0
@@ -64,7 +64,26 @@ class ProcessTasks {
|
|
64
64
|
? overrides
|
65
65
|
: { __overrides_unparsed__: [] };
|
66
66
|
if (dependencyConfig.projects) {
|
67
|
-
|
67
|
+
/** LERNA SUPPORT START - Remove in v20 */
|
68
|
+
// Lerna uses `dependencies` in `prepNxOptions`, so we need to maintain
|
69
|
+
// support for it until lerna can be updated to use the syntax.
|
70
|
+
//
|
71
|
+
// This should have been removed in v17, but the updates to lerna had not
|
72
|
+
// been made yet.
|
73
|
+
//
|
74
|
+
// TODO(@agentender): Remove this part in v20
|
75
|
+
if (typeof dependencyConfig.projects === 'string') {
|
76
|
+
if (dependencyConfig.projects === 'self') {
|
77
|
+
this.processTasksForSingleProject(task, task.target.project, dependencyConfig, configuration, taskOverrides, overrides);
|
78
|
+
continue;
|
79
|
+
}
|
80
|
+
else if (dependencyConfig.projects === 'dependencies') {
|
81
|
+
this.processTasksForDependencies(projectUsedToDeriveDependencies, dependencyConfig, configuration, task, taskOverrides, overrides);
|
82
|
+
continue;
|
83
|
+
}
|
84
|
+
}
|
85
|
+
/** LERNA SUPPORT END - Remove in v17 */
|
86
|
+
this.processTasksForMatchingProjects(dependencyConfig, configuration, task, taskOverrides, overrides);
|
68
87
|
}
|
69
88
|
else if (dependencyConfig.dependencies) {
|
70
89
|
this.processTasksForDependencies(projectUsedToDeriveDependencies, dependencyConfig, configuration, task, taskOverrides, overrides);
|
@@ -74,41 +93,21 @@ class ProcessTasks {
|
|
74
93
|
}
|
75
94
|
}
|
76
95
|
}
|
77
|
-
processTasksForMatchingProjects(dependencyConfig,
|
96
|
+
processTasksForMatchingProjects(dependencyConfig, configuration, task, taskOverrides, overrides) {
|
78
97
|
const targetProjectSpecifiers = typeof dependencyConfig.projects === 'string'
|
79
98
|
? [dependencyConfig.projects]
|
80
99
|
: dependencyConfig.projects;
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
}
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
// TODO(@agentender): Remove this part in v17
|
93
|
-
const matchingProjects =
|
94
|
-
/** LERNA SUPPORT START - Remove in v17 */
|
95
|
-
projectSpecifier === 'self' &&
|
96
|
-
!this.projectGraph.nodes[projectSpecifier]
|
97
|
-
? [task.target.project]
|
98
|
-
: /** LERNA SUPPORT END */
|
99
|
-
(0, find_matching_projects_1.findMatchingProjects)([projectSpecifier], this.projectGraph.nodes);
|
100
|
-
if (matchingProjects.length === 0) {
|
101
|
-
output_1.output.warn({
|
102
|
-
title: `\`dependsOn\` is misconfigured for ${task.target.project}:${task.target.target}`,
|
103
|
-
bodyLines: [
|
104
|
-
`Project pattern "${projectSpecifier}" does not match any projects.`,
|
105
|
-
],
|
106
|
-
});
|
107
|
-
}
|
108
|
-
for (const projectName of matchingProjects) {
|
109
|
-
this.processTasksForSingleProject(task, projectName, dependencyConfig, configuration, taskOverrides, overrides);
|
110
|
-
}
|
111
|
-
}
|
100
|
+
const matchingProjects = (0, find_matching_projects_1.findMatchingProjects)(targetProjectSpecifiers, this.projectGraph.nodes);
|
101
|
+
if (matchingProjects.length === 0) {
|
102
|
+
output_1.output.warn({
|
103
|
+
title: `\`dependsOn\` is misconfigured for ${task.target.project}:${task.target.target}`,
|
104
|
+
bodyLines: [
|
105
|
+
`Project patterns "${targetProjectSpecifiers}" does not match any projects.`,
|
106
|
+
],
|
107
|
+
});
|
108
|
+
}
|
109
|
+
for (const projectName of matchingProjects) {
|
110
|
+
this.processTasksForSingleProject(task, projectName, dependencyConfig, configuration, taskOverrides, overrides);
|
112
111
|
}
|
113
112
|
}
|
114
113
|
processTasksForSingleProject(task, projectName, dependencyConfig, configuration, taskOverrides, overrides) {
|
@@ -31,7 +31,7 @@ declare const messageOptions: {
|
|
31
31
|
}];
|
32
32
|
};
|
33
33
|
export type MessageKey = keyof typeof messageOptions;
|
34
|
-
export type MessageData = typeof messageOptions[MessageKey][number];
|
34
|
+
export type MessageData = (typeof messageOptions)[MessageKey][number];
|
35
35
|
export declare class PromptMessages {
|
36
36
|
private selectedMessages;
|
37
37
|
getPrompt(key: MessageKey): MessageData;
|
@@ -22,6 +22,15 @@ function findMatchingProjects(patterns = [], projects) {
|
|
22
22
|
}
|
23
23
|
const projectNames = Object.keys(projects);
|
24
24
|
const matchedProjects = new Set();
|
25
|
+
// If the first pattern is an exclude pattern,
|
26
|
+
// we add a wildcard pattern at the first to select
|
27
|
+
// all projects, except the ones that match the exclude pattern.
|
28
|
+
// e.g. ['!tag:someTag', 'project2'] will match all projects except
|
29
|
+
// the ones with the tag 'someTag', and also match the project 'project2',
|
30
|
+
// regardless of its tags.
|
31
|
+
if (isExcludePattern(patterns[0])) {
|
32
|
+
patterns.unshift('*');
|
33
|
+
}
|
25
34
|
for (const stringPattern of patterns) {
|
26
35
|
if (!stringPattern.length) {
|
27
36
|
continue;
|
@@ -139,8 +148,11 @@ function addMatchingProjectsByTag(projectNames, projects, pattern, matchedProjec
|
|
139
148
|
}
|
140
149
|
}
|
141
150
|
}
|
151
|
+
function isExcludePattern(pattern) {
|
152
|
+
return pattern.startsWith('!');
|
153
|
+
}
|
142
154
|
function parseStringPattern(pattern, projects) {
|
143
|
-
const isExclude = pattern
|
155
|
+
const isExclude = isExcludePattern(pattern);
|
144
156
|
// Support for things like: `!{type}:value`
|
145
157
|
if (isExclude) {
|
146
158
|
pattern = pattern.substring(1);
|
@@ -1,6 +1,7 @@
|
|
1
1
|
import { InputDefinition, ProjectMetadata, TargetConfiguration } from '../config/workspace-json-project-json';
|
2
2
|
import { PackageManagerCommands } from './package-manager';
|
3
3
|
export interface NxProjectPackageJsonConfiguration {
|
4
|
+
name?: string;
|
4
5
|
implicitDependencies?: string[];
|
5
6
|
tags?: string[];
|
6
7
|
namedInputs?: {
|