nx 19.4.0-beta.0 → 19.4.0-beta.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +14 -14
- package/release/changelog-renderer/index.d.ts +6 -0
- package/release/changelog-renderer/index.js +1 -1
- package/src/command-line/connect/connect-to-nx-cloud.d.ts +1 -1
- package/src/command-line/connect/connect-to-nx-cloud.js +16 -25
- package/src/command-line/graph/graph.d.ts +1 -0
- package/src/command-line/graph/graph.js +12 -1
- package/src/command-line/init/implementation/dot-nx/add-nx-scripts.js +5 -6
- package/src/command-line/release/changelog.js +6 -1
- package/src/command-line/release/config/config.js +3 -0
- package/src/command-line/run/command-object.js +2 -1
- package/src/config/workspace-json-project-json.d.ts +2 -0
- package/src/core/graph/main.js +1 -1
- package/src/core/graph/styles.css +1 -1
- package/src/daemon/client/client.d.ts +5 -0
- package/src/daemon/client/client.js +14 -0
- package/src/daemon/message-types/task-history.d.ts +13 -0
- package/src/daemon/message-types/task-history.js +19 -0
- package/src/daemon/server/handle-get-task-history.d.ts +4 -0
- package/src/daemon/server/handle-get-task-history.js +12 -0
- package/src/daemon/server/handle-write-task-runs-to-history.d.ts +5 -0
- package/src/daemon/server/handle-write-task-runs-to-history.js +12 -0
- package/src/daemon/server/plugins.js +12 -2
- package/src/daemon/server/server.js +9 -0
- package/src/daemon/socket-utils.d.ts +1 -0
- package/src/daemon/socket-utils.js +6 -1
- package/src/executors/run-commands/run-commands.impl.js +29 -20
- package/src/nx-cloud/generators/connect-to-nx-cloud/connect-to-nx-cloud.d.ts +1 -0
- package/src/nx-cloud/generators/connect-to-nx-cloud/connect-to-nx-cloud.js +68 -33
- package/src/nx-cloud/generators/connect-to-nx-cloud/schema.json +5 -0
- package/src/nx-cloud/utilities/url-shorten.d.ts +2 -1
- package/src/nx-cloud/utilities/url-shorten.js +47 -11
- package/src/plugins/package-json-workspaces/create-nodes.js +12 -7
- package/src/plugins/project-json/build-nodes/package-json-next-to-project-json.js +10 -2
- package/src/plugins/target-defaults/target-defaults-plugin.d.ts +5 -0
- package/src/project-graph/plugins/internal-api.js +1 -1
- package/src/project-graph/plugins/isolation/index.d.ts +1 -1
- package/src/project-graph/plugins/isolation/index.js +8 -13
- package/src/project-graph/plugins/isolation/messaging.d.ts +6 -3
- package/src/project-graph/plugins/isolation/messaging.js +9 -3
- package/src/project-graph/plugins/isolation/plugin-pool.d.ts +1 -1
- package/src/project-graph/plugins/isolation/plugin-pool.js +123 -43
- package/src/project-graph/plugins/isolation/plugin-worker.js +128 -107
- package/src/project-graph/project-graph.js +7 -1
- package/src/project-graph/utils/normalize-project-nodes.d.ts +1 -5
- package/src/project-graph/utils/normalize-project-nodes.js +2 -17
- package/src/project-graph/utils/project-configuration-utils.js +14 -3
- package/src/project-graph/utils/retrieve-workspace-files.d.ts +3 -3
- package/src/tasks-runner/default-tasks-runner.js +2 -2
- package/src/tasks-runner/life-cycle.d.ts +10 -10
- package/src/tasks-runner/life-cycle.js +10 -10
- package/src/tasks-runner/life-cycles/task-history-life-cycle.d.ts +9 -0
- package/src/tasks-runner/life-cycles/task-history-life-cycle.js +54 -0
- package/src/tasks-runner/run-command.js +6 -0
- package/src/tasks-runner/task-env.d.ts +13 -0
- package/src/tasks-runner/task-env.js +41 -26
- package/src/tasks-runner/task-orchestrator.js +4 -4
- package/src/utils/git-utils.d.ts +1 -1
- package/src/utils/git-utils.js +13 -2
- package/src/utils/nx-cloud-utils.d.ts +1 -1
- package/src/utils/nx-cloud-utils.js +1 -1
- package/src/utils/package-json.d.ts +3 -0
- package/src/utils/package-json.js +15 -3
- package/src/utils/serialize-target.d.ts +1 -0
- package/src/utils/serialize-target.js +7 -0
- package/src/utils/task-history.d.ts +8 -0
- package/src/utils/task-history.js +97 -0
package/package.json
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
{
|
2
2
|
"name": "nx",
|
3
|
-
"version": "19.4.0-beta.
|
3
|
+
"version": "19.4.0-beta.2",
|
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": {
|
@@ -45,8 +45,8 @@
|
|
45
45
|
"cli-cursor": "3.1.0",
|
46
46
|
"cli-spinners": "2.6.1",
|
47
47
|
"cliui": "^8.0.1",
|
48
|
-
"dotenv": "~16.
|
49
|
-
"dotenv-expand": "~
|
48
|
+
"dotenv": "~16.4.5",
|
49
|
+
"dotenv-expand": "~11.0.6",
|
50
50
|
"enquirer": "~2.3.6",
|
51
51
|
"figures": "3.2.0",
|
52
52
|
"flat": "^5.0.2",
|
@@ -70,7 +70,7 @@
|
|
70
70
|
"yargs-parser": "21.1.1",
|
71
71
|
"node-machine-id": "1.1.12",
|
72
72
|
"ora": "5.3.0",
|
73
|
-
"@nrwl/tao": "19.4.0-beta.
|
73
|
+
"@nrwl/tao": "19.4.0-beta.2"
|
74
74
|
},
|
75
75
|
"peerDependencies": {
|
76
76
|
"@swc-node/register": "^1.8.0",
|
@@ -85,16 +85,16 @@
|
|
85
85
|
}
|
86
86
|
},
|
87
87
|
"optionalDependencies": {
|
88
|
-
"@nx/nx-darwin-x64": "19.4.0-beta.
|
89
|
-
"@nx/nx-darwin-arm64": "19.4.0-beta.
|
90
|
-
"@nx/nx-linux-x64-gnu": "19.4.0-beta.
|
91
|
-
"@nx/nx-linux-x64-musl": "19.4.0-beta.
|
92
|
-
"@nx/nx-win32-x64-msvc": "19.4.0-beta.
|
93
|
-
"@nx/nx-linux-arm64-gnu": "19.4.0-beta.
|
94
|
-
"@nx/nx-linux-arm64-musl": "19.4.0-beta.
|
95
|
-
"@nx/nx-linux-arm-gnueabihf": "19.4.0-beta.
|
96
|
-
"@nx/nx-win32-arm64-msvc": "19.4.0-beta.
|
97
|
-
"@nx/nx-freebsd-x64": "19.4.0-beta.
|
88
|
+
"@nx/nx-darwin-x64": "19.4.0-beta.2",
|
89
|
+
"@nx/nx-darwin-arm64": "19.4.0-beta.2",
|
90
|
+
"@nx/nx-linux-x64-gnu": "19.4.0-beta.2",
|
91
|
+
"@nx/nx-linux-x64-musl": "19.4.0-beta.2",
|
92
|
+
"@nx/nx-win32-x64-msvc": "19.4.0-beta.2",
|
93
|
+
"@nx/nx-linux-arm64-gnu": "19.4.0-beta.2",
|
94
|
+
"@nx/nx-linux-arm64-musl": "19.4.0-beta.2",
|
95
|
+
"@nx/nx-linux-arm-gnueabihf": "19.4.0-beta.2",
|
96
|
+
"@nx/nx-win32-arm64-msvc": "19.4.0-beta.2",
|
97
|
+
"@nx/nx-freebsd-x64": "19.4.0-beta.2"
|
98
98
|
},
|
99
99
|
"nx-migrations": {
|
100
100
|
"migrations": "./migrations.json",
|
@@ -53,6 +53,12 @@ export interface DefaultChangelogRenderOptions extends ChangelogRenderOptions {
|
|
53
53
|
* section. Defaults to true.
|
54
54
|
*/
|
55
55
|
authors?: boolean;
|
56
|
+
/**
|
57
|
+
* If authors is enabled, controls whether or not to try to map the authors to their GitHub usernames
|
58
|
+
* using https://ungh.cc (from https://github.com/unjs/ungh) and the email addresses found in the commits.
|
59
|
+
* Defaults to true.
|
60
|
+
*/
|
61
|
+
mapAuthorsToGitHubUsernames?: boolean;
|
56
62
|
/**
|
57
63
|
* Whether or not the commit references (such as commit and/or PR links) should be included in the changelog.
|
58
64
|
* Defaults to true.
|
@@ -145,7 +145,7 @@ const defaultChangelogRenderer = async ({ projectGraph, changes, releaseVersion,
|
|
145
145
|
}
|
146
146
|
}
|
147
147
|
// Try to map authors to github usernames
|
148
|
-
if (repoSlug) {
|
148
|
+
if (repoSlug && changelogRenderOptions.mapAuthorsToGitHubUsernames) {
|
149
149
|
await Promise.all([..._authors.keys()].map(async (authorName) => {
|
150
150
|
const meta = _authors.get(authorName);
|
151
151
|
for (const email of meta.email) {
|
@@ -3,6 +3,6 @@ import { NxArgs } from '../../utils/command-line-utils';
|
|
3
3
|
import { MessageKey } from '../../utils/ab-testing';
|
4
4
|
export declare function onlyDefaultRunnerIsUsed(nxJson: NxJsonConfiguration): boolean;
|
5
5
|
export declare function connectToNxCloudIfExplicitlyAsked(opts: NxArgs): Promise<void>;
|
6
|
-
export declare function connectToNxCloudCommand(): Promise<boolean>;
|
6
|
+
export declare function connectToNxCloudCommand(command?: string): Promise<boolean>;
|
7
7
|
export declare function connectToNxCloudWithPrompt(command: string): Promise<void>;
|
8
8
|
export declare function connectExistingRepoToNxCloudPrompt(key?: MessageKey): Promise<boolean>;
|
@@ -41,38 +41,29 @@ async function connectToNxCloudIfExplicitlyAsked(opts) {
|
|
41
41
|
}
|
42
42
|
}
|
43
43
|
exports.connectToNxCloudIfExplicitlyAsked = connectToNxCloudIfExplicitlyAsked;
|
44
|
-
async function connectToNxCloudCommand() {
|
44
|
+
async function connectToNxCloudCommand(command) {
|
45
45
|
const nxJson = (0, configuration_1.readNxJson)();
|
46
46
|
if ((0, nx_cloud_utils_1.isNxCloudUsed)(nxJson)) {
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
bodyLines: [
|
51
|
-
'If you have not done so already, connect your workspace to your Nx Cloud account:',
|
52
|
-
`- Login at ${(0, nx_cloud_utils_1.getNxCloudUrl)(nxJson)} to connect your repository`,
|
53
|
-
],
|
54
|
-
});
|
47
|
+
const token = process.env.NX_CLOUD_ACCESS_TOKEN || nxJson.nxCloudAccessToken;
|
48
|
+
if (!token) {
|
49
|
+
throw new Error(`Unable to authenticate. Either define accessToken in nx.json or set the NX_CLOUD_ACCESS_TOKEN env variable.`);
|
55
50
|
}
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
output_1.output.log({
|
63
|
-
title: '✔ This workspace already has Nx Cloud set up',
|
64
|
-
bodyLines: [
|
65
|
-
'If you have not done so already, connect your workspace to your Nx Cloud account:',
|
66
|
-
`- Connect with Nx Cloud at:
|
51
|
+
const connectCloudUrl = await (0, url_shorten_1.shortenedCloudUrl)('nx-connect', token);
|
52
|
+
output_1.output.log({
|
53
|
+
title: '✔ This workspace already has Nx Cloud set up',
|
54
|
+
bodyLines: [
|
55
|
+
'If you have not done so already, connect your workspace to your Nx Cloud account:',
|
56
|
+
`- Connect with Nx Cloud at:
|
67
57
|
|
68
58
|
${connectCloudUrl}`,
|
69
|
-
|
70
|
-
|
71
|
-
}
|
59
|
+
],
|
60
|
+
});
|
72
61
|
return false;
|
73
62
|
}
|
74
63
|
const tree = new tree_1.FsTree(workspace_root_1.workspaceRoot, false, 'connect-to-nx-cloud');
|
75
|
-
const callback = await (0, connect_to_nx_cloud_1.connectToNxCloud)(tree, {
|
64
|
+
const callback = await (0, connect_to_nx_cloud_1.connectToNxCloud)(tree, {
|
65
|
+
installationSource: command ?? 'nx-connect',
|
66
|
+
});
|
76
67
|
tree.lock();
|
77
68
|
(0, tree_1.flushChanges)(workspace_root_1.workspaceRoot, tree.listChanges());
|
78
69
|
await callback();
|
@@ -81,7 +72,7 @@ async function connectToNxCloudCommand() {
|
|
81
72
|
exports.connectToNxCloudCommand = connectToNxCloudCommand;
|
82
73
|
async function connectToNxCloudWithPrompt(command) {
|
83
74
|
const setNxCloud = await nxCloudPrompt('setupNxCloud');
|
84
|
-
const useCloud = setNxCloud === 'yes' ? await connectToNxCloudCommand() : false;
|
75
|
+
const useCloud = setNxCloud === 'yes' ? await connectToNxCloudCommand(command) : false;
|
85
76
|
await (0, ab_testing_1.recordStat)({
|
86
77
|
command,
|
87
78
|
nxVersion: versions_1.nxVersion,
|
@@ -28,6 +28,7 @@ const nx_deps_cache_1 = require("../../project-graph/nx-deps-cache");
|
|
28
28
|
const create_task_hasher_1 = require("../../hasher/create-task-hasher");
|
29
29
|
const task_hasher_1 = require("../../hasher/task-hasher");
|
30
30
|
const error_types_1 = require("../../project-graph/error-types");
|
31
|
+
const nx_cloud_utils_1 = require("../../utils/nx-cloud-utils");
|
31
32
|
// maps file extention to MIME types
|
32
33
|
const mimeType = {
|
33
34
|
'.ico': 'image/x-icon',
|
@@ -478,10 +479,12 @@ async function createProjectGraphAndSourceMapClientResponse(affected = []) {
|
|
478
479
|
let sourceMaps;
|
479
480
|
let isPartial = false;
|
480
481
|
let errors;
|
482
|
+
let connectedToCloud;
|
481
483
|
try {
|
482
484
|
const projectGraphAndSourceMaps = await (0, project_graph_1.createProjectGraphAndSourceMapsAsync)({ exitOnError: false });
|
483
485
|
projectGraph = projectGraphAndSourceMaps.projectGraph;
|
484
486
|
sourceMaps = projectGraphAndSourceMaps.sourceMaps;
|
487
|
+
connectedToCloud = (0, nx_cloud_utils_1.isNxCloudUsed)((0, configuration_1.readNxJson)());
|
485
488
|
}
|
486
489
|
catch (e) {
|
487
490
|
if (e instanceof error_types_1.ProjectGraphError) {
|
@@ -509,7 +512,14 @@ async function createProjectGraphAndSourceMapClientResponse(affected = []) {
|
|
509
512
|
const projects = Object.values(graph.nodes);
|
510
513
|
const dependencies = graph.dependencies;
|
511
514
|
const hasher = (0, crypto_1.createHash)('sha256');
|
512
|
-
hasher.update(JSON.stringify({
|
515
|
+
hasher.update(JSON.stringify({
|
516
|
+
layout,
|
517
|
+
projects,
|
518
|
+
dependencies,
|
519
|
+
sourceMaps,
|
520
|
+
errors,
|
521
|
+
connectedToCloud,
|
522
|
+
}));
|
513
523
|
const hash = hasher.digest('hex');
|
514
524
|
perf_hooks_1.performance.mark('project graph response generation:end');
|
515
525
|
perf_hooks_1.performance.measure('project graph watch calculation', 'project graph watch calculation:start', 'project graph watch calculation:end');
|
@@ -525,6 +535,7 @@ async function createProjectGraphAndSourceMapClientResponse(affected = []) {
|
|
525
535
|
fileMap,
|
526
536
|
isPartial,
|
527
537
|
errors,
|
538
|
+
connectedToCloud,
|
528
539
|
},
|
529
540
|
sourceMapResponse: sourceMaps,
|
530
541
|
};
|
@@ -74,12 +74,11 @@ function writeMinimalNxJson(host, version) {
|
|
74
74
|
exports.writeMinimalNxJson = writeMinimalNxJson;
|
75
75
|
function updateGitIgnore(host) {
|
76
76
|
let contents = host.read('.gitignore', 'utf-8') ?? '';
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
}
|
77
|
+
['.nx/installation', '.nx/cache', '.nx/workspace-data'].forEach((file) => {
|
78
|
+
if (!contents.includes(file)) {
|
79
|
+
contents = [contents, file].join('\n');
|
80
|
+
}
|
81
|
+
});
|
83
82
|
host.write('.gitignore', contents);
|
84
83
|
}
|
85
84
|
exports.updateGitIgnore = updateGitIgnore;
|
@@ -222,7 +222,12 @@ async function releaseChangelog(args) {
|
|
222
222
|
continue;
|
223
223
|
}
|
224
224
|
for (const project of releaseGroup.projects) {
|
225
|
-
|
225
|
+
// If the project does not have any changes, do not process its dependents
|
226
|
+
if (!projectsVersionData[project] ||
|
227
|
+
projectsVersionData[project].newVersion === null) {
|
228
|
+
continue;
|
229
|
+
}
|
230
|
+
const dependentProjects = (projectsVersionData[project].dependentProjects || [])
|
226
231
|
.map((dep) => {
|
227
232
|
return {
|
228
233
|
dependencyName: dep.source,
|
@@ -110,6 +110,7 @@ async function createNxReleaseConfig(projectGraph, projectFileMap, userConfig =
|
|
110
110
|
renderer: defaultRendererPath,
|
111
111
|
renderOptions: {
|
112
112
|
authors: true,
|
113
|
+
mapAuthorsToGitHubUsernames: true,
|
113
114
|
commitReferences: true,
|
114
115
|
versionTitleDate: true,
|
115
116
|
},
|
@@ -123,6 +124,7 @@ async function createNxReleaseConfig(projectGraph, projectFileMap, userConfig =
|
|
123
124
|
renderer: defaultRendererPath,
|
124
125
|
renderOptions: {
|
125
126
|
authors: true,
|
127
|
+
mapAuthorsToGitHubUsernames: true,
|
126
128
|
commitReferences: true,
|
127
129
|
versionTitleDate: true,
|
128
130
|
},
|
@@ -153,6 +155,7 @@ async function createNxReleaseConfig(projectGraph, projectFileMap, userConfig =
|
|
153
155
|
renderer: defaultRendererPath,
|
154
156
|
renderOptions: {
|
155
157
|
authors: true,
|
158
|
+
mapAuthorsToGitHubUsernames: true,
|
156
159
|
commitReferences: true,
|
157
160
|
versionTitleDate: true,
|
158
161
|
},
|
@@ -28,8 +28,9 @@ exports.yargsNxInfixCommand = {
|
|
28
28
|
command: '$0 <target> [project] [_..]',
|
29
29
|
describe: 'Run a target for a project',
|
30
30
|
handler: async (args) => {
|
31
|
-
await (0, params_1.handleErrors)(args.verbose ?? process.env.NX_VERBOSE_LOGGING === 'true', async () => {
|
31
|
+
const exitCode = await (0, params_1.handleErrors)(args.verbose ?? process.env.NX_VERBOSE_LOGGING === 'true', async () => {
|
32
32
|
return (await Promise.resolve().then(() => require('./run-one'))).runOne(process.cwd(), (0, shared_options_1.withOverrides)(args, 0));
|
33
33
|
});
|
34
|
+
process.exit(exitCode);
|
34
35
|
},
|
35
36
|
};
|
@@ -105,6 +105,7 @@ export interface ProjectConfiguration {
|
|
105
105
|
metadata?: ProjectMetadata;
|
106
106
|
}
|
107
107
|
export interface ProjectMetadata {
|
108
|
+
description?: string;
|
108
109
|
technologies?: string[];
|
109
110
|
targetGroups?: Record<string, string[]>;
|
110
111
|
}
|
@@ -112,6 +113,7 @@ export interface TargetMetadata {
|
|
112
113
|
[k: string]: any;
|
113
114
|
description?: string;
|
114
115
|
technologies?: string[];
|
116
|
+
nonAtomizedTarget?: string;
|
115
117
|
}
|
116
118
|
export interface TargetDependencyConfig {
|
117
119
|
/**
|