nx 21.4.0-canary.20250725-0359f0d → 21.4.0-canary.20250726-64897b7
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/.eslintrc.json +2 -0
- package/bin/nx.js +6 -6
- package/package.json +12 -11
- package/schemas/nx-schema.json +77 -0
- package/src/command-line/nx-cloud/connect/command-object.d.ts.map +1 -1
- package/src/command-line/nx-cloud/connect/command-object.js +2 -1
- package/src/command-line/nx-cloud/connect/connect-to-nx-cloud.d.ts +1 -0
- package/src/command-line/nx-cloud/connect/connect-to-nx-cloud.d.ts.map +1 -1
- package/src/command-line/nx-cloud/connect/connect-to-nx-cloud.js +12 -0
- package/src/command-line/release/changelog.d.ts.map +1 -1
- package/src/command-line/release/changelog.js +6 -2
- package/src/command-line/release/command-object.d.ts +1 -0
- package/src/command-line/release/command-object.d.ts.map +1 -1
- package/src/command-line/release/command-object.js +4 -0
- package/src/command-line/release/config/config.d.ts +10 -3
- package/src/command-line/release/config/config.d.ts.map +1 -1
- package/src/command-line/release/config/config.js +103 -0
- package/src/command-line/release/config/filter-release-groups.d.ts +5 -1
- package/src/command-line/release/config/filter-release-groups.d.ts.map +1 -1
- package/src/command-line/release/release.d.ts.map +1 -1
- package/src/command-line/release/release.js +6 -1
- package/src/command-line/release/utils/shared.d.ts +9 -0
- package/src/command-line/release/utils/shared.d.ts.map +1 -1
- package/src/command-line/release/utils/shared.js +25 -4
- package/src/command-line/release/version/project-logger.d.ts.map +1 -1
- package/src/command-line/release/version/project-logger.js +1 -0
- package/src/command-line/release/version/release-group-processor.d.ts +6 -1
- package/src/command-line/release/version/release-group-processor.d.ts.map +1 -1
- package/src/command-line/release/version/release-group-processor.js +73 -3
- package/src/command-line/release/version/version-actions.d.ts +21 -0
- package/src/command-line/release/version/version-actions.d.ts.map +1 -1
- package/src/command-line/release/version/version-actions.js +32 -1
- package/src/command-line/release/version.d.ts.map +1 -1
- package/src/command-line/release/version.js +42 -11
- package/src/command-line/sync/sync.d.ts.map +1 -1
- package/src/command-line/sync/sync.js +8 -2
- package/src/config/nx-json.d.ts +58 -0
- package/src/config/nx-json.d.ts.map +1 -1
- package/src/config/workspace-json-project-json.d.ts +2 -1
- package/src/config/workspace-json-project-json.d.ts.map +1 -1
- package/src/core/graph/main.js +1 -1
- package/src/daemon/server/handle-get-sync-generator-changes.d.ts.map +1 -1
- package/src/daemon/server/handle-get-sync-generator-changes.js +1 -0
- package/src/native/index.d.ts +1 -0
- package/src/native/nx.wasm32-wasi.wasm +0 -0
- package/src/plugins/js/lock-file/pnpm-parser.js +2 -1
- package/src/project-graph/utils/normalize-project-nodes.d.ts +5 -5
- package/src/project-graph/utils/normalize-project-nodes.d.ts.map +1 -1
- package/src/project-graph/utils/normalize-project-nodes.js +35 -6
- package/src/tasks-runner/life-cycle.d.ts +2 -0
- package/src/tasks-runner/life-cycle.d.ts.map +1 -1
- package/src/tasks-runner/life-cycle.js +7 -0
- package/src/tasks-runner/task-orchestrator.d.ts.map +1 -1
- package/src/tasks-runner/task-orchestrator.js +5 -0
- package/src/tasks-runner/tasks-schedule.d.ts +1 -0
- package/src/tasks-runner/tasks-schedule.d.ts.map +1 -1
- package/src/tasks-runner/tasks-schedule.js +3 -0
- package/src/utils/git-utils.d.ts +1 -0
- package/src/utils/git-utils.d.ts.map +1 -1
- package/src/utils/git-utils.js +11 -4
- package/src/utils/sync-generators.d.ts +3 -1
- package/src/utils/sync-generators.d.ts.map +1 -1
- package/src/utils/sync-generators.js +7 -1
package/.eslintrc.json
CHANGED
@@ -138,6 +138,8 @@
|
|
138
138
|
// Powerpack plugin conditionally available dynamically at runtime
|
139
139
|
"@nx/powerpack-conformance",
|
140
140
|
"@nx/conformance",
|
141
|
+
// Nx Docker plugin conditionally available dynamically at runtime
|
142
|
+
"@nx/docker",
|
141
143
|
// Only used in test-utils at the time of writing
|
142
144
|
"@ltd/j-toml"
|
143
145
|
]
|
package/bin/nx.js
CHANGED
@@ -68,7 +68,12 @@ async function main() {
|
|
68
68
|
handleMissingLocalInstallation(workspace ? workspace.dir : null);
|
69
69
|
}
|
70
70
|
// this file is already in the local workspace
|
71
|
-
if (
|
71
|
+
if (isNxCloudCommand(process.argv[2])) {
|
72
|
+
// nx-cloud commands can run without local Nx installation
|
73
|
+
process.env.NX_DAEMON = 'false';
|
74
|
+
require('nx/src/command-line/nx-commands').commandsObject.argv;
|
75
|
+
}
|
76
|
+
else if (isLocalInstall) {
|
72
77
|
await (0, init_local_1.initLocal)(workspace);
|
73
78
|
}
|
74
79
|
else if (localNx) {
|
@@ -82,11 +87,6 @@ async function main() {
|
|
82
87
|
require(localNx);
|
83
88
|
}
|
84
89
|
}
|
85
|
-
else if (isNxCloudCommand(process.argv[2])) {
|
86
|
-
// nx-cloud commands can run without local Nx installation
|
87
|
-
process.env.NX_DAEMON = 'false';
|
88
|
-
require('nx/src/command-line/nx-commands').commandsObject.argv;
|
89
|
-
}
|
90
90
|
}
|
91
91
|
}
|
92
92
|
function handleNoWorkspace(globalNxVersion) {
|
package/package.json
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
{
|
2
2
|
"name": "nx",
|
3
|
-
"version": "21.4.0-canary.
|
3
|
+
"version": "21.4.0-canary.20250726-64897b7",
|
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": {
|
@@ -83,16 +83,16 @@
|
|
83
83
|
}
|
84
84
|
},
|
85
85
|
"optionalDependencies": {
|
86
|
-
"@nx/nx-darwin-arm64": "21.4.0-canary.
|
87
|
-
"@nx/nx-darwin-x64": "21.4.0-canary.
|
88
|
-
"@nx/nx-freebsd-x64": "21.4.0-canary.
|
89
|
-
"@nx/nx-linux-arm-gnueabihf": "21.4.0-canary.
|
90
|
-
"@nx/nx-linux-arm64-gnu": "21.4.0-canary.
|
91
|
-
"@nx/nx-linux-arm64-musl": "21.4.0-canary.
|
92
|
-
"@nx/nx-linux-x64-gnu": "21.4.0-canary.
|
93
|
-
"@nx/nx-linux-x64-musl": "21.4.0-canary.
|
94
|
-
"@nx/nx-win32-arm64-msvc": "21.4.0-canary.
|
95
|
-
"@nx/nx-win32-x64-msvc": "21.4.0-canary.
|
86
|
+
"@nx/nx-darwin-arm64": "21.4.0-canary.20250726-64897b7",
|
87
|
+
"@nx/nx-darwin-x64": "21.4.0-canary.20250726-64897b7",
|
88
|
+
"@nx/nx-freebsd-x64": "21.4.0-canary.20250726-64897b7",
|
89
|
+
"@nx/nx-linux-arm-gnueabihf": "21.4.0-canary.20250726-64897b7",
|
90
|
+
"@nx/nx-linux-arm64-gnu": "21.4.0-canary.20250726-64897b7",
|
91
|
+
"@nx/nx-linux-arm64-musl": "21.4.0-canary.20250726-64897b7",
|
92
|
+
"@nx/nx-linux-x64-gnu": "21.4.0-canary.20250726-64897b7",
|
93
|
+
"@nx/nx-linux-x64-musl": "21.4.0-canary.20250726-64897b7",
|
94
|
+
"@nx/nx-win32-arm64-msvc": "21.4.0-canary.20250726-64897b7",
|
95
|
+
"@nx/nx-win32-x64-msvc": "21.4.0-canary.20250726-64897b7"
|
96
96
|
},
|
97
97
|
"nx-migrations": {
|
98
98
|
"migrations": "./migrations.json",
|
@@ -129,6 +129,7 @@
|
|
129
129
|
"@nx/vue",
|
130
130
|
"@nx/web",
|
131
131
|
"@nx/webpack",
|
132
|
+
"@nx/docker",
|
132
133
|
{
|
133
134
|
"package": "nx-cloud",
|
134
135
|
"version": "latest"
|
package/schemas/nx-schema.json
CHANGED
@@ -224,6 +224,18 @@
|
|
224
224
|
"description": "Enables using version plans as a specifier source for versioning and to determine changes for changelog generation."
|
225
225
|
}
|
226
226
|
]
|
227
|
+
},
|
228
|
+
"docker": {
|
229
|
+
"oneOf": [
|
230
|
+
{
|
231
|
+
"type": "boolean",
|
232
|
+
"enum": [true],
|
233
|
+
"description": "Enable docker configuration with default settings. Warning: Docker support is experimental. Breaking changes may occur and not adhere to semver versioning. "
|
234
|
+
},
|
235
|
+
{
|
236
|
+
"$ref": "#/definitions/NxReleaseGroupDockerConfiguration"
|
237
|
+
}
|
238
|
+
]
|
227
239
|
}
|
228
240
|
},
|
229
241
|
"required": ["projects"]
|
@@ -309,6 +321,18 @@
|
|
309
321
|
},
|
310
322
|
"releaseTagPatternStrictPreid": {
|
311
323
|
"$ref": "#/definitions/NxReleaseReleaseTagPatternStrictPreidConfiguration"
|
324
|
+
},
|
325
|
+
"docker": {
|
326
|
+
"oneOf": [
|
327
|
+
{
|
328
|
+
"type": "boolean",
|
329
|
+
"enum": [true],
|
330
|
+
"description": "Enable docker configuration with default settings. Warning: Docker support is experimental. Breaking changes may occur and not adhere to semver versioning."
|
331
|
+
},
|
332
|
+
{
|
333
|
+
"$ref": "#/definitions/NxReleaseDockerConfiguration"
|
334
|
+
}
|
335
|
+
]
|
312
336
|
}
|
313
337
|
}
|
314
338
|
},
|
@@ -995,6 +1019,59 @@
|
|
995
1019
|
}
|
996
1020
|
}
|
997
1021
|
}
|
1022
|
+
},
|
1023
|
+
"NxReleaseDockerConfiguration": {
|
1024
|
+
"type": "object",
|
1025
|
+
"description": "Configuration for handling Docker projects during nx release.",
|
1026
|
+
"properties": {
|
1027
|
+
"preVersionCommand": {
|
1028
|
+
"type": "string",
|
1029
|
+
"description": "A command to run after validation of nx release configuration, but before docker versioning begins. Useful for preparing docker build artifacts. If --dry-run is passed, the command is still executed, but with the NX_DRY_RUN environment variable set to 'true'."
|
1030
|
+
},
|
1031
|
+
"skipVersionActions": {
|
1032
|
+
"oneOf": [
|
1033
|
+
{
|
1034
|
+
"type": "array",
|
1035
|
+
"items": {
|
1036
|
+
"type": "string"
|
1037
|
+
},
|
1038
|
+
"description": "Array of projects which should use a no-op VersionActions implementation rather than any potentially inferred by default or via Inference Plugins."
|
1039
|
+
},
|
1040
|
+
{
|
1041
|
+
"type": "boolean",
|
1042
|
+
"description": "When set to true, all projects in the release setup/release group will use a no-op VersionActions implementation."
|
1043
|
+
}
|
1044
|
+
],
|
1045
|
+
"description": "Projects which should use a no-op VersionActions implementation rather than any potentially inferred by default or via Inference Plugins. Can be an array of project names (subset of projects in the release setup/release group) or a boolean (true means all projects)."
|
1046
|
+
},
|
1047
|
+
"versionSchemes": {
|
1048
|
+
"type": "object",
|
1049
|
+
"additionalProperties": {
|
1050
|
+
"type": "string"
|
1051
|
+
},
|
1052
|
+
"description": "Record of named version patterns to choose between when versioning docker projects. e.g. \"production\": \"{currentDate|YYMM.DD}.{shortCommitSha}\", \"hotfix\": \"{currentDate|YYMM.DD}-hotfix\""
|
1053
|
+
},
|
1054
|
+
"repositoryName": {
|
1055
|
+
"type": "string",
|
1056
|
+
"description": "Repository name for the image on the configured registry"
|
1057
|
+
},
|
1058
|
+
"registryUrl": {
|
1059
|
+
"type": "string",
|
1060
|
+
"description": "Url of the Docker Image/Container Registry to push images to. Defaults to Docker Hub."
|
1061
|
+
}
|
1062
|
+
},
|
1063
|
+
"additionalProperties": false
|
1064
|
+
},
|
1065
|
+
"NxReleaseGroupDockerConfiguration": {
|
1066
|
+
"type": "object",
|
1067
|
+
"$comment": "We need to improve this configuration definition to be more precise once legacy versioning is removed. Right now it needs to be left open and runtime validation will ensure correct behavior.",
|
1068
|
+
"properties": {
|
1069
|
+
"groupPreVersionCommand": {
|
1070
|
+
"type": "string",
|
1071
|
+
"description": "A command to run after validation of nx release configuration, but before docker versioning begins. Used for preparing docker build artifacts. If --dry-run is passed, the command is still executed, but with the NX_DRY_RUN environment variable set to 'true'. It will run in addition to the global `preVersionCommand`"
|
1072
|
+
}
|
1073
|
+
},
|
1074
|
+
"additionalProperties": true
|
998
1075
|
}
|
999
1076
|
}
|
1000
1077
|
}
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"command-object.d.ts","sourceRoot":"","sources":["../../../../../../../packages/nx/src/command-line/nx-cloud/connect/command-object.ts"],"names":[],"mappings":"AAAA,OAAO,EAAQ,aAAa,EAAE,MAAM,OAAO,CAAC;AAK5C,eAAO,MAAM,mBAAmB,EAAE,
|
1
|
+
{"version":3,"file":"command-object.d.ts","sourceRoot":"","sources":["../../../../../../../packages/nx/src/command-line/nx-cloud/connect/command-object.ts"],"names":[],"mappings":"AAAA,OAAO,EAAQ,aAAa,EAAE,MAAM,OAAO,CAAC;AAK5C,eAAO,MAAM,mBAAmB,EAAE,aAoBjC,CAAC;AAUF,eAAO,MAAM,oBAAoB,EAAE,aAMlC,CAAC"}
|
@@ -10,7 +10,8 @@ exports.yargsConnectCommand = {
|
|
10
10
|
describe: `Connect workspace to Nx Cloud.`,
|
11
11
|
builder: (yargs) => (0, documentation_1.linkToNxDevAndExamples)(withConnectOptions(yargs), 'connect-to-nx-cloud'),
|
12
12
|
handler: async (args) => {
|
13
|
-
|
13
|
+
const checkRemote = process.env.NX_SKIP_CHECK_REMOTE !== 'true';
|
14
|
+
await (await Promise.resolve().then(() => require('./connect-to-nx-cloud'))).connectToNxCloudCommand({ ...args, checkRemote });
|
14
15
|
await (await Promise.resolve().then(() => require('../../../utils/ab-testing'))).recordStat({
|
15
16
|
command: 'connect',
|
16
17
|
nxVersion: versions_1.nxVersion,
|
@@ -7,6 +7,7 @@ export declare function connectToNxCloudIfExplicitlyAsked(opts: NxArgs): Promise
|
|
7
7
|
export declare function connectWorkspaceToCloud(options: ConnectToNxCloudOptions, directory?: string): Promise<string>;
|
8
8
|
export declare function connectToNxCloudCommand(options: {
|
9
9
|
generateToken?: boolean;
|
10
|
+
checkRemote?: boolean;
|
10
11
|
}, command?: string): Promise<boolean>;
|
11
12
|
export declare function connectExistingRepoToNxCloudPrompt(command?: string, key?: MessageKey): Promise<boolean>;
|
12
13
|
export declare function connectToNxCloudWithPrompt(command: string): Promise<void>;
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"connect-to-nx-cloud.d.ts","sourceRoot":"","sources":["../../../../../../../packages/nx/src/command-line/nx-cloud/connect/connect-to-nx-cloud.ts"],"names":[],"mappings":"AAGA,OAAO,EAEL,uBAAuB,EACxB,MAAM,sEAAsE,CAAC;AAI9E,OAAO,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAC9D,OAAO,EAAE,MAAM,EAAE,MAAM,mCAAmC,CAAC;AAC3D,OAAO,EACL,UAAU,EAIX,MAAM,2BAA2B,CAAC;
|
1
|
+
{"version":3,"file":"connect-to-nx-cloud.d.ts","sourceRoot":"","sources":["../../../../../../../packages/nx/src/command-line/nx-cloud/connect/connect-to-nx-cloud.ts"],"names":[],"mappings":"AAGA,OAAO,EAEL,uBAAuB,EACxB,MAAM,sEAAsE,CAAC;AAI9E,OAAO,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAC9D,OAAO,EAAE,MAAM,EAAE,MAAM,mCAAmC,CAAC;AAC3D,OAAO,EACL,UAAU,EAIX,MAAM,2BAA2B,CAAC;AAQnC,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,mBAAmB,WAclE;AAED,wBAAsB,iCAAiC,CACrD,IAAI,EAAE,MAAM,GACX,OAAO,CAAC,IAAI,CAAC,CAgBf;AAED,wBAAsB,uBAAuB,CAC3C,OAAO,EAAE,uBAAuB,EAChC,SAAS,SAAgB,mBAO1B;AAED,wBAAsB,uBAAuB,CAC3C,OAAO,EAAE;IAAE,aAAa,CAAC,EAAE,OAAO,CAAC;IAAC,WAAW,CAAC,EAAE,OAAO,CAAA;CAAE,EAC3D,OAAO,CAAC,EAAE,MAAM,GACf,OAAO,CAAC,OAAO,CAAC,CA2ElB;AAMD,wBAAsB,kCAAkC,CACtD,OAAO,SAAS,EAChB,GAAG,GAAE,UAA2B,GAC/B,OAAO,CAAC,OAAO,CAAC,CAWlB;AAED,wBAAsB,0BAA0B,CAAC,OAAO,EAAE,MAAM,iBAY/D"}
|
@@ -17,6 +17,7 @@ const ab_testing_1 = require("../../../utils/ab-testing");
|
|
17
17
|
const versions_1 = require("../../../utils/versions");
|
18
18
|
const workspace_root_1 = require("../../../utils/workspace-root");
|
19
19
|
const chalk = require("chalk");
|
20
|
+
const git_utils_1 = require("../../../utils/git-utils");
|
20
21
|
const ora = require('ora');
|
21
22
|
const open = require('open');
|
22
23
|
function onlyDefaultRunnerIsUsed(nxJson) {
|
@@ -59,6 +60,17 @@ async function connectToNxCloudCommand(options, command) {
|
|
59
60
|
const installationSource = process.env.NX_CONSOLE
|
60
61
|
? 'nx-console'
|
61
62
|
: 'nx-connect';
|
63
|
+
const hasRemote = !!(0, git_utils_1.getGitRemote)();
|
64
|
+
if (!hasRemote && options.checkRemote) {
|
65
|
+
output_1.output.error({
|
66
|
+
title: 'Missing VCS provider',
|
67
|
+
bodyLines: [
|
68
|
+
'Push this repository to a VCS provider (e.g., GitHub) and try again.',
|
69
|
+
'Go to https://github.com/new to create a repository on GitHub.',
|
70
|
+
],
|
71
|
+
});
|
72
|
+
return false;
|
73
|
+
}
|
62
74
|
if ((0, nx_cloud_utils_1.isNxCloudUsed)(nxJson)) {
|
63
75
|
const token = process.env.NX_CLOUD_ACCESS_TOKEN ||
|
64
76
|
nxJson.nxCloudAccessToken ||
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"changelog.d.ts","sourceRoot":"","sources":["../../../../../../packages/nx/src/command-line/release/changelog.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,sBAAsB,EAAc,MAAM,sBAAsB,CAAC;AAkB1E,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAmBpD,OAAO,EAEL,SAAS,EAUV,MAAM,aAAa,CAAC;AAQrB,OAAO,EACL,cAAc,
|
1
|
+
{"version":3,"file":"changelog.d.ts","sourceRoot":"","sources":["../../../../../../packages/nx/src/command-line/release/changelog.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,sBAAsB,EAAc,MAAM,sBAAsB,CAAC;AAkB1E,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAmBpD,OAAO,EAEL,SAAS,EAUV,MAAM,aAAa,CAAC;AAQrB,OAAO,EACL,cAAc,EASf,MAAM,gBAAgB,CAAC;AAExB,MAAM,WAAW,wBAAwB;IACvC,kBAAkB,CAAC,EAAE;QACnB,cAAc,EAAE,cAAc,CAAC;QAC/B,QAAQ,EAAE,MAAM,CAAC;QACjB,WAAW,EAAE,WAAW,GAAG,IAAI,CAAC;KACjC,CAAC;IACF,iBAAiB,CAAC,EAAE;QAClB,CAAC,WAAW,EAAE,MAAM,GAAG;YACrB,cAAc,EAAE,cAAc,CAAC;YAC/B,QAAQ,EAAE,MAAM,CAAC;YACjB,WAAW,EAAE,WAAW,GAAG,IAAI,CAAC;SACjC,CAAC;KACH,CAAC;CACH;AAED,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,gBAAgB,EAAE,MAAM,EAAE,GAAG,GAAG,CAAC;IACjC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,gBAAgB,CAAC,EAAE,SAAS,EAAE,CAAC;IAC/B,OAAO,CAAC,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IAC5C,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;CAC3B;AAED,MAAM,MAAM,WAAW,GAAG,CAAC,YAAY,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;AAElE,eAAO,MAAM,0BAA0B,GAAI,MAAM,gBAAgB,oBACV,CAAC;AAExD,wBAAgB,SAAS,CAAC,qBAAqB,EAAE,sBAAsB,IAOnE,MAAM,gBAAgB,KACrB,OAAO,CAAC,wBAAwB,CAAC,CAqrBrC"}
|
@@ -827,11 +827,15 @@ async function generateChangelogForProjects({ tree, args, changes, projectsVersi
|
|
827
827
|
* no changelog entry is relevant in that case.
|
828
828
|
*/
|
829
829
|
if (!projectsVersionData[project.name] ||
|
830
|
-
projectsVersionData[project.name].newVersion === null
|
830
|
+
(projectsVersionData[project.name].newVersion === null &&
|
831
|
+
!projectsVersionData[project.name].dockerVersion)) {
|
831
832
|
continue;
|
832
833
|
}
|
834
|
+
const preferDockerVersion = (0, shared_1.shouldPreferDockerVersionForReleaseGroup)(releaseGroup);
|
833
835
|
const releaseVersion = new shared_1.ReleaseVersion({
|
834
|
-
version: projectsVersionData[project.name].
|
836
|
+
version: preferDockerVersion && projectsVersionData[project.name].dockerVersion
|
837
|
+
? projectsVersionData[project.name].dockerVersion
|
838
|
+
: projectsVersionData[project.name].newVersion,
|
835
839
|
releaseTagPattern: releaseGroup.releaseTagPattern,
|
836
840
|
projectName: project.name,
|
837
841
|
});
|
@@ -33,6 +33,7 @@ export type VersionOptions = NxReleaseArgs & GitOptions & VersionPlanArgs & Firs
|
|
33
33
|
*/
|
34
34
|
generatorOptionsOverrides?: Record<string, unknown>;
|
35
35
|
versionActionsOptionsOverrides?: Record<string, unknown>;
|
36
|
+
dockerVersionScheme?: string;
|
36
37
|
};
|
37
38
|
export type ChangelogOptions = NxReleaseArgs & GitOptions & VersionPlanArgs & FirstReleaseArgs & {
|
38
39
|
version?: string | null;
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"command-object.d.ts","sourceRoot":"","sources":["../../../../../../packages/nx/src/command-line/release/command-object.ts"],"names":[],"mappings":"AAAA,OAAO,EAAQ,aAAa,EAAY,MAAM,OAAO,CAAC;AAEtD,OAAO,EACL,WAAW,EACX,cAAc,EAQf,MAAM,+BAA+B,CAAC;AACvC,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAG7C,MAAM,WAAW,iBAAiB;IAChC,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,WAAW,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC;CACjC;AAED,MAAM,WAAW,aAAc,SAAQ,iBAAiB;IACtD,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAED,UAAU,UAAU;IAClB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,aAAa,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IAClC,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,UAAU,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IAC/B,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IAChC,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,MAAM,cAAc,GAAG,aAAa,GACxC,UAAU,GACV,eAAe,GACf,gBAAgB,GAAG;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB;;;;OAIG;IACH,yBAAyB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACpD,8BAA8B,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;
|
1
|
+
{"version":3,"file":"command-object.d.ts","sourceRoot":"","sources":["../../../../../../packages/nx/src/command-line/release/command-object.ts"],"names":[],"mappings":"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"}
|
@@ -80,6 +80,10 @@ const releaseCommand = {
|
|
80
80
|
type: 'string',
|
81
81
|
describe: 'The optional prerelease identifier to apply to the version. This will only be applied in the case that the specifier argument has been set to `prerelease` OR when conventional commits are enabled, in which case it will modify the resolved specifier from conventional commits to be its prerelease equivalent. E.g. minor -> preminor.',
|
82
82
|
default: '',
|
83
|
+
})
|
84
|
+
.options('dockerVersionScheme', {
|
85
|
+
type: 'string',
|
86
|
+
describe: 'Exact docker version scheme to apply to the selected release group. Warning: Docker support is experimental. Breaking changes may occur and not adhere to semver versioning.',
|
83
87
|
})
|
84
88
|
.option('yes', {
|
85
89
|
type: 'boolean',
|
@@ -1,8 +1,13 @@
|
|
1
|
-
import { NxJsonConfiguration, NxReleaseConfiguration } from '../../../config/nx-json';
|
1
|
+
import { NxJsonConfiguration, NxReleaseConfiguration, NxReleaseDockerConfiguration } from '../../../config/nx-json';
|
2
2
|
import { ProjectFileMap, ProjectGraph } from '../../../config/project-graph';
|
3
3
|
type DeepRequired<T> = Required<{
|
4
4
|
[K in keyof T]: T[K] extends Required<T[K]> ? T[K] : DeepRequired<T[K]>;
|
5
5
|
}>;
|
6
|
+
type EnsureDockerOptional<T> = {
|
7
|
+
[K in keyof T]: Omit<T[K], 'docker'> & {
|
8
|
+
docker: DeepRequired<NxReleaseDockerConfiguration> | undefined;
|
9
|
+
};
|
10
|
+
};
|
6
11
|
type EnsureProjectsArray<T> = {
|
7
12
|
[K in keyof T]: T[K] extends {
|
8
13
|
projects: any;
|
@@ -36,12 +41,14 @@ export declare const DEFAULT_VERSION_ACTIONS_PATH = "@nx/js/src/release/version-
|
|
36
41
|
* pattern such as directories and globs).
|
37
42
|
*/
|
38
43
|
export type NxReleaseConfig = Omit<DeepRequired<NxReleaseConfiguration & {
|
39
|
-
groups: DeepRequired<RemoveTrueFromPropertiesOnEach<EnsureProjectsArray<NxReleaseConfiguration['groups']>, 'changelog'
|
44
|
+
groups: EnsureDockerOptional<DeepRequired<RemoveTrueFromPropertiesOnEach<EnsureProjectsArray<NxReleaseConfiguration['groups']>, 'changelog' | 'docker'>>>;
|
40
45
|
changelog: RemoveTrueFromProperties<DeepRequired<NxReleaseConfiguration['changelog']>, 'workspaceChangelog' | 'projectChangelogs'>;
|
41
46
|
conventionalCommits: {
|
42
47
|
types: RemoveBooleanFromPropertiesOnEach<DeepRequired<RemoveBooleanFromProperties<DeepRequired<NxReleaseConfiguration['conventionalCommits']['types']>, string>>, 'changelog'>;
|
43
48
|
};
|
44
|
-
}>, 'projects'
|
49
|
+
}>, 'projects' | 'docker'> & {
|
50
|
+
docker: DeepRequired<NxReleaseDockerConfiguration> | undefined;
|
51
|
+
};
|
45
52
|
export interface CreateNxReleaseConfigError {
|
46
53
|
code: 'PROJECTS_AND_GROUPS_DEFINED' | 'RELEASE_GROUP_MATCHES_NO_PROJECTS' | 'RELEASE_GROUP_RELEASE_TAG_PATTERN_VERSION_PLACEHOLDER_MISSING_OR_EXCESSIVE' | 'PROJECT_MATCHES_MULTIPLE_GROUPS' | 'CONVENTIONAL_COMMITS_SHORTHAND_MIXED_WITH_OVERLAPPING_OPTIONS' | 'GLOBAL_GIT_CONFIG_MIXED_WITH_GRANULAR_GIT_CONFIG' | 'CANNOT_RESOLVE_CHANGELOG_RENDERER' | 'INVALID_CHANGELOG_CREATE_RELEASE_PROVIDER' | 'INVALID_CHANGELOG_CREATE_RELEASE_HOSTNAME' | 'INVALID_CHANGELOG_CREATE_RELEASE_API_BASE_URL' | 'GIT_PUSH_FALSE_WITH_CREATE_RELEASE';
|
47
54
|
data: Record<string, string | string[]>;
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../../../../../../packages/nx/src/command-line/release/config/config.ts"],"names":[],"mappings":"AAeA,OAAO,EAEL,mBAAmB,EAEnB,sBAAsB,
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../../../../../../packages/nx/src/command-line/release/config/config.ts"],"names":[],"mappings":"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"}
|
@@ -139,9 +139,56 @@ async function createNxReleaseConfig(projectGraph, projectFileMap, userConfig =
|
|
139
139
|
(userConfig.projectsRelationship === 'independent' &&
|
140
140
|
!userGroups.some((g) => g.projectsRelationship === 'fixed'));
|
141
141
|
const defaultRendererPath = (0, node_path_1.join)(__dirname, '../../../../release/changelog-renderer');
|
142
|
+
// Helper function to create meaningful docker defaults when user opts in
|
143
|
+
function createDockerDefaults(userDockerConfig) {
|
144
|
+
const defaultVersionSchemes = {
|
145
|
+
production: '{currentDate|YYMM.DD}.{shortCommitSha}',
|
146
|
+
hotfix: '{currentDate|YYMM.DD}.{shortCommitSha}-hotfix',
|
147
|
+
};
|
148
|
+
const defaultPreVersionCommand = 'npx nx run-many -t docker:build';
|
149
|
+
// If user explicitly sets docker: true, apply meaningful defaults
|
150
|
+
if (userDockerConfig === true) {
|
151
|
+
return {
|
152
|
+
preVersionCommand: defaultPreVersionCommand,
|
153
|
+
skipVersionActions: undefined,
|
154
|
+
versionSchemes: defaultVersionSchemes,
|
155
|
+
repositoryName: undefined,
|
156
|
+
registryUrl: undefined,
|
157
|
+
};
|
158
|
+
}
|
159
|
+
// If user provides docker configuration object, merge with base defaults
|
160
|
+
return {
|
161
|
+
preVersionCommand: userDockerConfig.preVersionCommand ?? defaultPreVersionCommand,
|
162
|
+
skipVersionActions: userDockerConfig.skipVersionActions
|
163
|
+
? Array.isArray(userDockerConfig.skipVersionActions)
|
164
|
+
? (0, find_matching_projects_1.findMatchingProjects)(userDockerConfig.skipVersionActions, projectGraph.nodes)
|
165
|
+
: userDockerConfig.skipVersionActions
|
166
|
+
: undefined,
|
167
|
+
versionSchemes: userDockerConfig.versionSchemes ?? defaultVersionSchemes,
|
168
|
+
repositoryName: userDockerConfig.repositoryName,
|
169
|
+
registryUrl: userDockerConfig.registryUrl,
|
170
|
+
};
|
171
|
+
}
|
172
|
+
// Helper function to normalize docker config at group level
|
173
|
+
function normalizeDockerConfig(dockerConfig) {
|
174
|
+
// If user explicitly sets docker: true at group level, apply meaningful defaults
|
175
|
+
if (dockerConfig === true) {
|
176
|
+
return createDockerDefaults(true);
|
177
|
+
}
|
178
|
+
// If user provides docker configuration object at group level, return it
|
179
|
+
if (dockerConfig && typeof dockerConfig === 'object') {
|
180
|
+
return createDockerDefaults(dockerConfig);
|
181
|
+
}
|
182
|
+
// No group-level docker config
|
183
|
+
return undefined;
|
184
|
+
}
|
142
185
|
const WORKSPACE_DEFAULTS = {
|
143
186
|
// By default all projects in all groups are released together
|
144
187
|
projectsRelationship: workspaceProjectsRelationship,
|
188
|
+
// Create docker defaults only if user has explicitly configured it, otherwise undefined
|
189
|
+
docker: userConfig.docker !== undefined
|
190
|
+
? createDockerDefaults(userConfig.docker)
|
191
|
+
: undefined,
|
145
192
|
git: gitDefaults,
|
146
193
|
version: {
|
147
194
|
useLegacyVersioning: USE_LEGACY_VERSIONING,
|
@@ -218,8 +265,16 @@ async function createNxReleaseConfig(projectGraph, projectFileMap, userConfig =
|
|
218
265
|
WORKSPACE_DEFAULTS.releaseTagPatternRequireSemver;
|
219
266
|
const groupReleaseTagPatternStrictPreid = userConfig.releaseTagPatternStrictPreid ??
|
220
267
|
defaultReleaseTagPatternStrictPreid;
|
268
|
+
const groupDocker = normalizeDockerConfig(userConfig.docker ?? WORKSPACE_DEFAULTS.docker);
|
221
269
|
const GROUP_DEFAULTS = {
|
222
270
|
projectsRelationship: groupProjectsRelationship,
|
271
|
+
// Only include docker configuration if user has explicitly configured it
|
272
|
+
docker: groupDocker && Object.keys(groupDocker).length > 0
|
273
|
+
? {
|
274
|
+
...groupDocker,
|
275
|
+
groupPreVersionCommand: '',
|
276
|
+
}
|
277
|
+
: undefined,
|
223
278
|
version: USE_LEGACY_VERSIONING
|
224
279
|
? {
|
225
280
|
conventionalCommits: false,
|
@@ -270,6 +325,10 @@ async function createNxReleaseConfig(projectGraph, projectFileMap, userConfig =
|
|
270
325
|
git: userConfig.git,
|
271
326
|
},
|
272
327
|
], userConfig.version);
|
328
|
+
const rootDockerConfig = userConfig.docker && {
|
329
|
+
...normalizeDockerConfig(WORKSPACE_DEFAULTS.docker),
|
330
|
+
...normalizeDockerConfig(userConfig.docker),
|
331
|
+
};
|
273
332
|
if (userConfig.changelog?.workspaceChangelog) {
|
274
333
|
userConfig.changelog.workspaceChangelog = normalizeTrueToEmptyObject(userConfig.changelog.workspaceChangelog);
|
275
334
|
}
|
@@ -333,6 +392,8 @@ async function createNxReleaseConfig(projectGraph, projectFileMap, userConfig =
|
|
333
392
|
delete rootVersionWithoutGlobalOptions
|
334
393
|
.specifierSource;
|
335
394
|
}
|
395
|
+
const rootDockerWithoutGlobalOptions = { ...rootDockerConfig };
|
396
|
+
delete rootDockerWithoutGlobalOptions.preVersionCommand;
|
336
397
|
const groups = userConfig.groups && Object.keys(userConfig.groups).length
|
337
398
|
? ensureProjectsConfigIsArray(userConfig.groups)
|
338
399
|
: /**
|
@@ -342,6 +403,10 @@ async function createNxReleaseConfig(projectGraph, projectFileMap, userConfig =
|
|
342
403
|
{
|
343
404
|
[exports.IMPLICIT_DEFAULT_RELEASE_GROUP]: {
|
344
405
|
projectsRelationship: GROUP_DEFAULTS.projectsRelationship,
|
406
|
+
// Only include docker configuration if user has explicitly configured it
|
407
|
+
docker: Object.keys(rootDockerWithoutGlobalOptions).length > 0
|
408
|
+
? deepMergeDefaults([GROUP_DEFAULTS.docker], rootDockerWithoutGlobalOptions)
|
409
|
+
: undefined,
|
345
410
|
projects: userConfig.projects
|
346
411
|
? // user-defined top level "projects" config takes priority if set
|
347
412
|
(0, find_matching_projects_1.findMatchingProjects)(ensureArray(userConfig.projects), projectGraph.nodes)
|
@@ -414,8 +479,21 @@ async function createNxReleaseConfig(projectGraph, projectFileMap, userConfig =
|
|
414
479
|
if (releaseGroup.changelog) {
|
415
480
|
releaseGroup.changelog = normalizeTrueToEmptyObject(releaseGroup.changelog);
|
416
481
|
}
|
482
|
+
const normalizedGroupDockerConfig = normalizeDockerConfig(releaseGroup.docker);
|
483
|
+
// Only include docker configuration if user has explicitly configured it at root or group level
|
484
|
+
const shouldIncludeDockerConfig = Object.keys(rootDockerWithoutGlobalOptions).length > 0 ||
|
485
|
+
normalizedGroupDockerConfig !== undefined;
|
417
486
|
const groupDefaults = {
|
418
487
|
projectsRelationship,
|
488
|
+
// Only include docker configuration if user has explicitly configured it
|
489
|
+
docker: shouldIncludeDockerConfig
|
490
|
+
? {
|
491
|
+
...GROUP_DEFAULTS.docker,
|
492
|
+
...rootDockerWithoutGlobalOptions,
|
493
|
+
groupPreVersionCommand: '',
|
494
|
+
...releaseGroup.docker,
|
495
|
+
}
|
496
|
+
: undefined,
|
419
497
|
projects: matchingProjects,
|
420
498
|
version: deepMergeDefaults(
|
421
499
|
// First apply any group level defaults, then apply actual root level config, then group level config
|
@@ -450,6 +528,10 @@ async function createNxReleaseConfig(projectGraph, projectFileMap, userConfig =
|
|
450
528
|
});
|
451
529
|
finalReleaseGroup.version =
|
452
530
|
finalReleaseGroup.version;
|
531
|
+
// Clean up docker global options that are not supported at the group level
|
532
|
+
if (finalReleaseGroup.docker) {
|
533
|
+
delete finalReleaseGroup.docker.preVersionCommand;
|
534
|
+
}
|
453
535
|
// Apply conventionalCommits shorthand to the final group if explicitly configured in the original group
|
454
536
|
if (releaseGroup.version?.conventionalCommits === true) {
|
455
537
|
if (USE_LEGACY_VERSIONING) {
|
@@ -501,6 +583,22 @@ async function createNxReleaseConfig(projectGraph, projectFileMap, userConfig =
|
|
501
583
|
}
|
502
584
|
releaseGroups[releaseGroupName] = finalReleaseGroup;
|
503
585
|
}
|
586
|
+
// Infer docker-related properties based on project configurations
|
587
|
+
for (const [releaseGroupName, releaseGroup] of Object.entries(releaseGroups)) {
|
588
|
+
const hasDockerProjects = releaseGroup.projects.some((projectName) => {
|
589
|
+
const projectNode = projectGraph.nodes[projectName];
|
590
|
+
// Check if project has meaningful docker config (not just undefined/empty values)
|
591
|
+
const projectDockerConfig = projectNode?.data.release?.docker;
|
592
|
+
const hasProjectDockerConfig = projectDockerConfig !== undefined;
|
593
|
+
// Check if release group has docker config at all (since we now only include it when explicitly configured)
|
594
|
+
const hasGroupDockerConfig = !!releaseGroup.docker;
|
595
|
+
return hasProjectDockerConfig || hasGroupDockerConfig;
|
596
|
+
});
|
597
|
+
if (hasDockerProjects) {
|
598
|
+
// If any project in the group has docker configuration, disable semver requirement
|
599
|
+
releaseGroup.releaseTagPatternRequireSemver = false;
|
600
|
+
}
|
601
|
+
}
|
504
602
|
const configError = validateChangelogConfig(releaseGroups, rootChangelogConfig);
|
505
603
|
if (configError) {
|
506
604
|
return {
|
@@ -512,11 +610,16 @@ async function createNxReleaseConfig(projectGraph, projectFileMap, userConfig =
|
|
512
610
|
error: null,
|
513
611
|
nxReleaseConfig: {
|
514
612
|
projectsRelationship: WORKSPACE_DEFAULTS.projectsRelationship,
|
613
|
+
// Only include docker configuration if user has explicitly configured it
|
614
|
+
...(WORKSPACE_DEFAULTS.docker
|
615
|
+
? { docker: WORKSPACE_DEFAULTS.docker }
|
616
|
+
: {}),
|
515
617
|
releaseTagPattern: WORKSPACE_DEFAULTS.releaseTagPattern,
|
516
618
|
releaseTagPatternCheckAllBranchesWhen: WORKSPACE_DEFAULTS.releaseTagPatternCheckAllBranchesWhen,
|
517
619
|
releaseTagPatternRequireSemver: WORKSPACE_DEFAULTS.releaseTagPatternRequireSemver,
|
518
620
|
releaseTagPatternStrictPreid: WORKSPACE_DEFAULTS.releaseTagPatternStrictPreid,
|
519
621
|
git: rootGitConfig,
|
622
|
+
docker: rootDockerConfig,
|
520
623
|
version: rootVersionConfig,
|
521
624
|
changelog: rootChangelogConfig,
|
522
625
|
groups: releaseGroups,
|
@@ -1,9 +1,13 @@
|
|
1
1
|
import { ProjectGraph } from '../../../config/project-graph';
|
2
2
|
import { NxReleaseConfig } from './config';
|
3
3
|
import { GroupVersionPlan, ProjectsVersionPlan } from './version-plans';
|
4
|
-
|
4
|
+
import { NxReleaseDockerConfiguration } from '../../../config/nx-json';
|
5
|
+
export type ReleaseGroupWithName = Omit<NxReleaseConfig['groups'][string], 'docker'> & {
|
5
6
|
name: string;
|
6
7
|
resolvedVersionPlans: (ProjectsVersionPlan | GroupVersionPlan)[] | false;
|
8
|
+
docker?: NxReleaseDockerConfiguration & {
|
9
|
+
groupPreVersionCommand?: string;
|
10
|
+
};
|
7
11
|
};
|
8
12
|
export declare function filterReleaseGroups(projectGraph: ProjectGraph, nxReleaseConfig: NxReleaseConfig, projectsFilter?: string[], groupsFilter?: string[]): {
|
9
13
|
error: null | {
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"filter-release-groups.d.ts","sourceRoot":"","sources":["../../../../../../../packages/nx/src/command-line/release/config/filter-release-groups.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAG7D,OAAO,EAAkC,eAAe,EAAE,MAAM,UAAU,CAAC;AAC3E,OAAO,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;
|
1
|
+
{"version":3,"file":"filter-release-groups.d.ts","sourceRoot":"","sources":["../../../../../../../packages/nx/src/command-line/release/config/filter-release-groups.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAG7D,OAAO,EAAkC,eAAe,EAAE,MAAM,UAAU,CAAC;AAC3E,OAAO,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AACxE,OAAO,EAAE,4BAA4B,EAAE,MAAM,yBAAyB,CAAC;AAEvE,MAAM,MAAM,oBAAoB,GAAG,IAAI,CACrC,eAAe,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,EACjC,QAAQ,CACT,GAAG;IACF,IAAI,EAAE,MAAM,CAAC;IACb,oBAAoB,EAAE,CAAC,mBAAmB,GAAG,gBAAgB,CAAC,EAAE,GAAG,KAAK,CAAC;IACzE,MAAM,CAAC,EAAE,4BAA4B,GAAG;QAAE,sBAAsB,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;CAC7E,CAAC;AAEF,wBAAgB,mBAAmB,CACjC,YAAY,EAAE,YAAY,EAC1B,eAAe,EAAE,eAAe,EAChC,cAAc,CAAC,EAAE,MAAM,EAAE,EACzB,YAAY,CAAC,EAAE,MAAM,EAAE,GACtB;IACD,KAAK,EAAE,IAAI,GAAG;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,SAAS,CAAC,EAAE,MAAM,EAAE,CAAA;KAAE,CAAC;IACtD,SAAS,EAAE;QACT,KAAK,EAAE,MAAM,CAAC;QACd,SAAS,EAAE,MAAM,EAAE,CAAC;KACrB,GAAG,IAAI,CAAC;IACT,aAAa,EAAE,oBAAoB,EAAE,CAAC;IACtC,8BAA8B,EAAE,GAAG,CAAC,oBAAoB,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC;CACxE,CAgMA"}
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"release.d.ts","sourceRoot":"","sources":["../../../../../../packages/nx/src/command-line/release/release.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,sBAAsB,EAAc,MAAM,sBAAsB,CAAC;AAM1E,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAyBlE,OAAO,EACL,sBAAsB,EAEvB,MAAM,WAAW,CAAC;AAEnB,eAAO,MAAM,iBAAiB,GAAI,MAAM,cAAc,oBACC,CAAC;AAExD,wBAAgB,SAAS,CAAC,qBAAqB,EAAE,sBAAsB,IAMnE,MAAM,cAAc,KACnB,OAAO,CAAC,sBAAsB,GAAG,MAAM,CAAC,
|
1
|
+
{"version":3,"file":"release.d.ts","sourceRoot":"","sources":["../../../../../../packages/nx/src/command-line/release/release.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,sBAAsB,EAAc,MAAM,sBAAsB,CAAC;AAM1E,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAyBlE,OAAO,EACL,sBAAsB,EAEvB,MAAM,WAAW,CAAC;AAEnB,eAAO,MAAM,iBAAiB,GAAI,MAAM,cAAc,oBACC,CAAC;AAExD,wBAAgB,SAAS,CAAC,qBAAqB,EAAE,sBAAsB,IAMnE,MAAM,cAAc,KACnB,OAAO,CAAC,sBAAsB,GAAG,MAAM,CAAC,CAkV5C"}
|
@@ -225,7 +225,12 @@ function createAPI(overrideReleaseConfig) {
|
|
225
225
|
let hasNewVersion = false;
|
226
226
|
// null means that all projects are versioned together but there were no changes
|
227
227
|
if (versionResult.workspaceVersion !== null) {
|
228
|
-
hasNewVersion = Object.values(versionResult.projectsVersionData).some((version) =>
|
228
|
+
hasNewVersion = Object.values(versionResult.projectsVersionData).some((version) =>
|
229
|
+
/**
|
230
|
+
* There is a scenario where applications will not have a newVersion created by VerisonActions,
|
231
|
+
* however, there will still be a dockerVersion created from the docker release.
|
232
|
+
*/
|
233
|
+
version.newVersion !== null || version.dockerVersion !== null);
|
229
234
|
}
|
230
235
|
let shouldPublish = !!args.yes && !args.skipPublish && hasNewVersion;
|
231
236
|
const shouldPromptPublishing = !args.yes && !args.skipPublish && !args.dryRun && hasNewVersion;
|
@@ -10,6 +10,11 @@ export interface VersionDataEntry {
|
|
10
10
|
* e.g. when using conventional commits
|
11
11
|
*/
|
12
12
|
newVersion: string | null;
|
13
|
+
/**
|
14
|
+
* dockerVersion will be populated if the project is a docker project and has been
|
15
|
+
* included within this release.
|
16
|
+
*/
|
17
|
+
dockerVersion?: string;
|
13
18
|
/**
|
14
19
|
* The list of projects which depend upon the current project.
|
15
20
|
*/
|
@@ -43,6 +48,10 @@ export declare function commitChanges({ changedFiles, deletedFiles, isDryRun, is
|
|
43
48
|
gitCommitArgs?: string | string[];
|
44
49
|
}): Promise<void>;
|
45
50
|
export declare function createCommitMessageValues(releaseGroups: ReleaseGroupWithName[], releaseGroupToFilteredProjects: Map<ReleaseGroupWithName, Set<string>>, versionData: VersionData, commitMessage: string): string[];
|
51
|
+
export declare function shouldPreferDockerVersionForReleaseGroup(releaseGroup: ReleaseGroupWithName): boolean;
|
52
|
+
export declare function shouldSkipVersionActions(dockerOptions: {
|
53
|
+
skipVersionActions?: string[] | boolean;
|
54
|
+
}, projectName: string): boolean;
|
46
55
|
export declare function createGitTagValues(releaseGroups: ReleaseGroupWithName[], releaseGroupToFilteredProjects: Map<ReleaseGroupWithName, Set<string>>, versionData: VersionData): string[];
|
47
56
|
export declare function handleDuplicateGitTags(gitTagValues: string[]): void;
|
48
57
|
export declare function getCommitsRelevantToProjects(projectGraph: ProjectGraph, commits: GitCommit[], projects: string[]): Promise<GitCommit[]>;
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"shared.d.ts","sourceRoot":"","sources":["../../../../../../../packages/nx/src/command-line/release/utils/shared.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAI7D,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,iCAAiC,CAAC;AAC5E,OAAO,EAAE,SAAS,EAAqB,MAAM,OAAO,CAAC;AAErD,eAAO,MAAM,wBAAwB,QAEpC,CAAC;AAGF,MAAM,MAAM,WAAW,GAAG,MAAM,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC;AAE3D,MAAM,WAAW,gBAAgB;IAC/B,cAAc,EAAE,MAAM,CAAC;IACvB;;;OAGG;IACH,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B;;OAEG;IACH,iBAAiB,EAAE;QACjB,MAAM,EAAE,MAAM,CAAC;QACf,MAAM,EAAE,MAAM,CAAC;QACf,IAAI,EAAE,MAAM,CAAC;QACb,oBAAoB,EAAE,MAAM,CAAC;QAC7B,cAAc,EAAE,MAAM,CAAC;KACxB,EAAE,CAAC;CACL;AAED,wBAAgB,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAQrD;AAED,qBAAa,cAAc;IACzB,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,YAAY,EAAE,OAAO,CAAC;gBAEV,EACV,OAAO,EAAE,qEAAqE;IAC9E,iBAAiB,EAAE,8EAA8E;IACjG,WAAW,GACZ,EAAE;QACD,OAAO,EAAE,MAAM,CAAC;QAChB,iBAAiB,EAAE,MAAM,CAAC;QAC1B,WAAW,CAAC,EAAE,MAAM,CAAC;KACtB;CAQF;AAED,wBAAsB,aAAa,CAAC,EAClC,YAAY,EACZ,YAAY,EACZ,QAAQ,EACR,SAAS,EACT,iBAAiB,EACjB,aAAa,GACd,EAAE;IACD,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,iBAAiB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC7B,aAAa,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;CACnC,iBAsBA;AAED,wBAAgB,yBAAyB,CACvC,aAAa,EAAE,oBAAoB,EAAE,EACrC,8BAA8B,EAAE,GAAG,CAAC,oBAAoB,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC,EACtE,WAAW,EAAE,WAAW,EACxB,aAAa,EAAE,MAAM,GACpB,MAAM,EAAE,CA0GV;AAcD,wBAAgB,kBAAkB,CAChC,aAAa,EAAE,oBAAoB,EAAE,EACrC,8BAA8B,EAAE,GAAG,CAAC,oBAAoB,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC,EACtE,WAAW,EAAE,WAAW,GACvB,MAAM,EAAE,
|
1
|
+
{"version":3,"file":"shared.d.ts","sourceRoot":"","sources":["../../../../../../../packages/nx/src/command-line/release/utils/shared.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAI7D,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,iCAAiC,CAAC;AAC5E,OAAO,EAAE,SAAS,EAAqB,MAAM,OAAO,CAAC;AAErD,eAAO,MAAM,wBAAwB,QAEpC,CAAC;AAGF,MAAM,MAAM,WAAW,GAAG,MAAM,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC;AAE3D,MAAM,WAAW,gBAAgB;IAC/B,cAAc,EAAE,MAAM,CAAC;IACvB;;;OAGG;IACH,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B;;;OAGG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB;;OAEG;IACH,iBAAiB,EAAE;QACjB,MAAM,EAAE,MAAM,CAAC;QACf,MAAM,EAAE,MAAM,CAAC;QACf,IAAI,EAAE,MAAM,CAAC;QACb,oBAAoB,EAAE,MAAM,CAAC;QAC7B,cAAc,EAAE,MAAM,CAAC;KACxB,EAAE,CAAC;CACL;AAED,wBAAgB,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAQrD;AAED,qBAAa,cAAc;IACzB,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,YAAY,EAAE,OAAO,CAAC;gBAEV,EACV,OAAO,EAAE,qEAAqE;IAC9E,iBAAiB,EAAE,8EAA8E;IACjG,WAAW,GACZ,EAAE;QACD,OAAO,EAAE,MAAM,CAAC;QAChB,iBAAiB,EAAE,MAAM,CAAC;QAC1B,WAAW,CAAC,EAAE,MAAM,CAAC;KACtB;CAQF;AAED,wBAAsB,aAAa,CAAC,EAClC,YAAY,EACZ,YAAY,EACZ,QAAQ,EACR,SAAS,EACT,iBAAiB,EACjB,aAAa,GACd,EAAE;IACD,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,iBAAiB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC7B,aAAa,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;CACnC,iBAsBA;AAED,wBAAgB,yBAAyB,CACvC,aAAa,EAAE,oBAAoB,EAAE,EACrC,8BAA8B,EAAE,GAAG,CAAC,oBAAoB,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC,EACtE,WAAW,EAAE,WAAW,EACxB,aAAa,EAAE,MAAM,GACpB,MAAM,EAAE,CA0GV;AAcD,wBAAgB,wCAAwC,CACtD,YAAY,EAAE,oBAAoB,GACjC,OAAO,CAIT;AAED,wBAAgB,wBAAwB,CACtC,aAAa,EAAE;IAAE,kBAAkB,CAAC,EAAE,MAAM,EAAE,GAAG,OAAO,CAAA;CAAE,EAC1D,WAAW,EAAE,MAAM,GAClB,OAAO,CAOT;AAED,wBAAgB,kBAAkB,CAChC,aAAa,EAAE,oBAAoB,EAAE,EACrC,8BAA8B,EAAE,GAAG,CAAC,oBAAoB,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC,EACtE,WAAW,EAAE,WAAW,GACvB,MAAM,EAAE,CAiDV;AAeD,wBAAgB,sBAAsB,CAAC,YAAY,EAAE,MAAM,EAAE,GAAG,IAAI,CAcnE;AAED,wBAAsB,4BAA4B,CAChD,YAAY,EAAE,YAAY,EAC1B,OAAO,EAAE,SAAS,EAAE,EACpB,QAAQ,EAAE,MAAM,EAAE,GACjB,OAAO,CAAC,SAAS,EAAE,CAAC,CAwBtB"}
|