nx 19.5.3 → 19.5.5
Sign up to get free protection for your applications and to get access to all the features.
- package/package.json +13 -13
- package/release/changelog-renderer/index.js +5 -4
- package/schemas/project-schema.json +40 -6
- package/src/command-line/connect/connect-to-nx-cloud.d.ts +2 -0
- package/src/command-line/connect/connect-to-nx-cloud.js +33 -6
- package/src/command-line/connect/view-logs.js +5 -3
- package/src/command-line/examples.js +4 -0
- package/src/command-line/init/implementation/add-nx-to-monorepo.js +1 -1
- package/src/command-line/init/implementation/add-nx-to-nest.js +1 -1
- package/src/command-line/init/implementation/add-nx-to-npm-repo.js +1 -1
- package/src/command-line/init/implementation/angular/index.js +1 -1
- package/src/command-line/init/implementation/angular/legacy-angular-versions.js +1 -1
- package/src/command-line/init/implementation/utils.d.ts +1 -1
- package/src/command-line/init/implementation/utils.js +7 -5
- package/src/command-line/init/init-v2.js +1 -4
- package/src/command-line/migrate/migrate.js +33 -13
- package/src/command-line/release/changelog.js +1 -0
- package/src/command-line/release/config/config.js +4 -0
- package/src/command-line/release/plan.js +2 -12
- package/src/command-line/release/utils/generate-version-plan-content.d.ts +1 -0
- package/src/command-line/release/utils/generate-version-plan-content.js +21 -0
- package/src/command-line/release/utils/shared.js +8 -5
- package/src/command-line/release/version.js +4 -2
- package/src/command-line/report/report.d.ts +1 -0
- package/src/command-line/report/report.js +14 -9
- package/src/core/graph/main.js +1 -1
- package/src/generators/internal-utils/format-changed-files-with-prettier-if-available.d.ts +6 -0
- package/src/generators/internal-utils/format-changed-files-with-prettier-if-available.js +15 -5
- package/src/native/index.d.ts +2 -0
- package/src/native/native-bindings.js +1 -0
- package/src/native/nx.wasi.cjs +35 -33
- package/src/native/nx.wasm32-wasi.wasm +0 -0
- package/src/nx-cloud/generators/connect-to-nx-cloud/connect-to-nx-cloud.d.ts +3 -2
- package/src/nx-cloud/generators/connect-to-nx-cloud/connect-to-nx-cloud.js +18 -57
- package/src/nx-cloud/utilities/url-shorten.d.ts +1 -1
- package/src/nx-cloud/utilities/url-shorten.js +5 -7
- package/src/project-graph/plugins/internal-api.js +4 -1
- package/src/tasks-runner/task-env.js +3 -2
- package/src/tasks-runner/task-graph-utils.js +1 -1
- package/src/utils/git-utils.js +3 -1
@@ -6,3 +6,9 @@ import type { Tree } from '../tree';
|
|
6
6
|
export declare function formatChangedFilesWithPrettierIfAvailable(tree: Tree, options?: {
|
7
7
|
silent?: boolean;
|
8
8
|
}): Promise<void>;
|
9
|
+
export declare function formatFilesWithPrettierIfAvailable(files: {
|
10
|
+
path: string;
|
11
|
+
content: string | Buffer;
|
12
|
+
}[], root: string, options?: {
|
13
|
+
silent?: boolean;
|
14
|
+
}): Promise<Map<string, string>>;
|
@@ -1,23 +1,32 @@
|
|
1
1
|
"use strict";
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
3
3
|
exports.formatChangedFilesWithPrettierIfAvailable = formatChangedFilesWithPrettierIfAvailable;
|
4
|
+
exports.formatFilesWithPrettierIfAvailable = formatFilesWithPrettierIfAvailable;
|
4
5
|
const path = require("path");
|
5
6
|
/**
|
6
7
|
* Formats all the created or updated files using Prettier
|
7
8
|
* @param tree - the file system tree
|
8
9
|
*/
|
9
10
|
async function formatChangedFilesWithPrettierIfAvailable(tree, options) {
|
11
|
+
const files = new Set(tree.listChanges().filter((file) => file.type !== 'DELETE'));
|
12
|
+
const results = await formatFilesWithPrettierIfAvailable(Array.from(files), tree.root, options);
|
13
|
+
for (const [path, content] of results) {
|
14
|
+
tree.write(path, content);
|
15
|
+
}
|
16
|
+
}
|
17
|
+
async function formatFilesWithPrettierIfAvailable(files, root, options) {
|
18
|
+
const results = new Map();
|
10
19
|
let prettier;
|
11
20
|
try {
|
12
21
|
prettier = await Promise.resolve().then(() => require('prettier'));
|
13
22
|
}
|
14
23
|
catch { }
|
15
|
-
if (!prettier)
|
16
|
-
return;
|
17
|
-
|
24
|
+
if (!prettier) {
|
25
|
+
return results;
|
26
|
+
}
|
18
27
|
await Promise.all(Array.from(files).map(async (file) => {
|
19
28
|
try {
|
20
|
-
const systemPath = path.join(
|
29
|
+
const systemPath = path.join(root, file.path);
|
21
30
|
let options = {
|
22
31
|
filepath: systemPath,
|
23
32
|
};
|
@@ -35,7 +44,7 @@ async function formatChangedFilesWithPrettierIfAvailable(tree, options) {
|
|
35
44
|
if (support.ignored || !support.inferredParser) {
|
36
45
|
return;
|
37
46
|
}
|
38
|
-
|
47
|
+
results.set(file.path,
|
39
48
|
// In prettier v3 the format result is a promise
|
40
49
|
await prettier.format(file.content.toString('utf-8'), options));
|
41
50
|
}
|
@@ -45,4 +54,5 @@ async function formatChangedFilesWithPrettierIfAvailable(tree, options) {
|
|
45
54
|
}
|
46
55
|
}
|
47
56
|
}));
|
57
|
+
return results;
|
48
58
|
}
|
package/src/native/index.d.ts
CHANGED
@@ -116,6 +116,8 @@ export interface FileSetInput {
|
|
116
116
|
|
117
117
|
export declare export function findImports(projectFileMap: Record<string, Array<string>>): Array<ImportResult>
|
118
118
|
|
119
|
+
export declare export function getBinaryTarget(): string
|
120
|
+
|
119
121
|
/**
|
120
122
|
* Expands the given outputs into a list of existing files.
|
121
123
|
* This is used when hashing outputs
|
@@ -372,6 +372,7 @@ module.exports.copy = nativeBinding.copy
|
|
372
372
|
module.exports.EventType = nativeBinding.EventType
|
373
373
|
module.exports.expandOutputs = nativeBinding.expandOutputs
|
374
374
|
module.exports.findImports = nativeBinding.findImports
|
375
|
+
module.exports.getBinaryTarget = nativeBinding.getBinaryTarget
|
375
376
|
module.exports.getFilesForOutputs = nativeBinding.getFilesForOutputs
|
376
377
|
module.exports.hashArray = nativeBinding.hashArray
|
377
378
|
module.exports.hashFile = nativeBinding.hashFile
|
package/src/native/nx.wasi.cjs
CHANGED
@@ -88,39 +88,40 @@ function __napi_rs_initialize_modules(__napiInstance) {
|
|
88
88
|
__napiInstance.exports['__napi_register__copy_3']?.()
|
89
89
|
__napiInstance.exports['__napi_register__hash_array_4']?.()
|
90
90
|
__napiInstance.exports['__napi_register__hash_file_5']?.()
|
91
|
-
__napiInstance.exports['
|
92
|
-
__napiInstance.exports['
|
93
|
-
__napiInstance.exports['
|
94
|
-
__napiInstance.exports['
|
95
|
-
__napiInstance.exports['
|
96
|
-
__napiInstance.exports['
|
97
|
-
__napiInstance.exports['
|
98
|
-
__napiInstance.exports['
|
99
|
-
__napiInstance.exports['
|
100
|
-
__napiInstance.exports['
|
101
|
-
__napiInstance.exports['
|
102
|
-
__napiInstance.exports['
|
103
|
-
__napiInstance.exports['
|
104
|
-
__napiInstance.exports['
|
105
|
-
__napiInstance.exports['
|
106
|
-
__napiInstance.exports['
|
107
|
-
__napiInstance.exports['
|
108
|
-
__napiInstance.exports['
|
109
|
-
__napiInstance.exports['
|
110
|
-
__napiInstance.exports['
|
111
|
-
__napiInstance.exports['
|
112
|
-
__napiInstance.exports['
|
113
|
-
__napiInstance.exports['
|
114
|
-
__napiInstance.exports['
|
115
|
-
__napiInstance.exports['
|
116
|
-
__napiInstance.exports['
|
117
|
-
__napiInstance.exports['
|
118
|
-
__napiInstance.exports['
|
119
|
-
__napiInstance.exports['
|
120
|
-
__napiInstance.exports['
|
121
|
-
__napiInstance.exports['
|
122
|
-
__napiInstance.exports['
|
123
|
-
__napiInstance.exports['
|
91
|
+
__napiInstance.exports['__napi_register__IS_WASM_6']?.()
|
92
|
+
__napiInstance.exports['__napi_register__get_binary_target_7']?.()
|
93
|
+
__napiInstance.exports['__napi_register__ImportResult_struct_8']?.()
|
94
|
+
__napiInstance.exports['__napi_register__find_imports_9']?.()
|
95
|
+
__napiInstance.exports['__napi_register__transfer_project_graph_10']?.()
|
96
|
+
__napiInstance.exports['__napi_register__ExternalNode_struct_11']?.()
|
97
|
+
__napiInstance.exports['__napi_register__Target_struct_12']?.()
|
98
|
+
__napiInstance.exports['__napi_register__Project_struct_13']?.()
|
99
|
+
__napiInstance.exports['__napi_register__ProjectGraph_struct_14']?.()
|
100
|
+
__napiInstance.exports['__napi_register__HashPlanner_struct_15']?.()
|
101
|
+
__napiInstance.exports['__napi_register__HashPlanner_impl_19']?.()
|
102
|
+
__napiInstance.exports['__napi_register__HashDetails_struct_20']?.()
|
103
|
+
__napiInstance.exports['__napi_register__HasherOptions_struct_21']?.()
|
104
|
+
__napiInstance.exports['__napi_register__TaskHasher_struct_22']?.()
|
105
|
+
__napiInstance.exports['__napi_register__TaskHasher_impl_25']?.()
|
106
|
+
__napiInstance.exports['__napi_register__Task_struct_26']?.()
|
107
|
+
__napiInstance.exports['__napi_register__TaskTarget_struct_27']?.()
|
108
|
+
__napiInstance.exports['__napi_register__TaskGraph_struct_28']?.()
|
109
|
+
__napiInstance.exports['__napi_register__FileData_struct_29']?.()
|
110
|
+
__napiInstance.exports['__napi_register__InputsInput_struct_30']?.()
|
111
|
+
__napiInstance.exports['__napi_register__FileSetInput_struct_31']?.()
|
112
|
+
__napiInstance.exports['__napi_register__RuntimeInput_struct_32']?.()
|
113
|
+
__napiInstance.exports['__napi_register__EnvironmentInput_struct_33']?.()
|
114
|
+
__napiInstance.exports['__napi_register__ExternalDependenciesInput_struct_34']?.()
|
115
|
+
__napiInstance.exports['__napi_register__DepsOutputsInput_struct_35']?.()
|
116
|
+
__napiInstance.exports['__napi_register__NxJson_struct_36']?.()
|
117
|
+
__napiInstance.exports['__napi_register__WorkspaceContext_struct_37']?.()
|
118
|
+
__napiInstance.exports['__napi_register__WorkspaceContext_impl_46']?.()
|
119
|
+
__napiInstance.exports['__napi_register__WorkspaceErrors_47']?.()
|
120
|
+
__napiInstance.exports['__napi_register__NxWorkspaceFiles_struct_48']?.()
|
121
|
+
__napiInstance.exports['__napi_register__NxWorkspaceFilesExternals_struct_49']?.()
|
122
|
+
__napiInstance.exports['__napi_register__UpdatedWorkspaceFiles_struct_50']?.()
|
123
|
+
__napiInstance.exports['__napi_register__FileMap_struct_51']?.()
|
124
|
+
__napiInstance.exports['__napi_register____test_only_transfer_file_map_52']?.()
|
124
125
|
}
|
125
126
|
module.exports.HashPlanner = __napiModule.exports.HashPlanner
|
126
127
|
module.exports.ImportResult = __napiModule.exports.ImportResult
|
@@ -129,6 +130,7 @@ module.exports.WorkspaceContext = __napiModule.exports.WorkspaceContext
|
|
129
130
|
module.exports.copy = __napiModule.exports.copy
|
130
131
|
module.exports.expandOutputs = __napiModule.exports.expandOutputs
|
131
132
|
module.exports.findImports = __napiModule.exports.findImports
|
133
|
+
module.exports.getBinaryTarget = __napiModule.exports.getBinaryTarget
|
132
134
|
module.exports.getFilesForOutputs = __napiModule.exports.getFilesForOutputs
|
133
135
|
module.exports.hashArray = __napiModule.exports.hashArray
|
134
136
|
module.exports.hashFile = __napiModule.exports.hashFile
|
Binary file
|
@@ -1,10 +1,11 @@
|
|
1
1
|
import { Tree } from '../../../generators/tree';
|
2
|
-
|
2
|
+
export declare function printSuccessMessage(token: string | undefined, installationSource: string, usesGithub: boolean): Promise<string>;
|
3
|
+
export interface ConnectToNxCloudOptions {
|
3
4
|
analytics?: boolean;
|
4
5
|
installationSource?: string;
|
5
6
|
hideFormatLogs?: boolean;
|
6
7
|
github?: boolean;
|
7
8
|
directory?: string;
|
8
9
|
}
|
9
|
-
export declare function connectToNxCloud(tree: Tree, schema: ConnectToNxCloudOptions): Promise<
|
10
|
+
export declare function connectToNxCloud(tree: Tree, schema: ConnectToNxCloudOptions): Promise<string>;
|
10
11
|
export default connectToNxCloud;
|
@@ -1,5 +1,6 @@
|
|
1
1
|
"use strict";
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
+
exports.printSuccessMessage = printSuccessMessage;
|
3
4
|
exports.connectToNxCloud = connectToNxCloud;
|
4
5
|
const child_process_1 = require("child_process");
|
5
6
|
const output_1 = require("../../../utils/output");
|
@@ -8,8 +9,6 @@ const nx_json_1 = require("../../../generators/utils/nx-json");
|
|
8
9
|
const format_changed_files_with_prettier_if_available_1 = require("../../../generators/internal-utils/format-changed-files-with-prettier-if-available");
|
9
10
|
const url_shorten_1 = require("../../utilities/url-shorten");
|
10
11
|
const get_cloud_options_1 = require("../../utilities/get-cloud-options");
|
11
|
-
const ora = require("ora");
|
12
|
-
const open = require("open");
|
13
12
|
function printCloudConnectionDisabledMessage() {
|
14
13
|
output_1.output.error({
|
15
14
|
title: `Connections to Nx Cloud are disabled for this workspace`,
|
@@ -55,53 +54,19 @@ async function createNxCloudWorkspace(workspaceName, installationSource, nxInitD
|
|
55
54
|
return response.data;
|
56
55
|
}
|
57
56
|
async function printSuccessMessage(token, installationSource, usesGithub) {
|
58
|
-
const connectCloudUrl = await (0, url_shorten_1.
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
`- Go to the following URL to connect your workspace to Nx Cloud:`,
|
72
|
-
'',
|
73
|
-
`${connectCloudUrl}`,
|
74
|
-
],
|
75
|
-
});
|
76
|
-
}
|
77
|
-
}
|
78
|
-
else {
|
79
|
-
if (installationSource === 'create-nx-workspace') {
|
80
|
-
output_1.output.note({
|
81
|
-
title: `Your Nx Cloud workspace is ready.`,
|
82
|
-
bodyLines: [
|
83
|
-
`To claim it, connect it to your Nx Cloud account:`,
|
84
|
-
`- Push your repository to your git hosting provider.`,
|
85
|
-
`- Go to the following URL to connect your workspace to Nx Cloud:`,
|
86
|
-
'',
|
87
|
-
`${connectCloudUrl}`,
|
88
|
-
],
|
89
|
-
});
|
90
|
-
}
|
91
|
-
else {
|
92
|
-
output_1.output.note({
|
93
|
-
title: `Your Nx Cloud workspace is ready.`,
|
94
|
-
bodyLines: [
|
95
|
-
`To claim it, connect it to your Nx Cloud account:`,
|
96
|
-
`- Commit and push your changes.`,
|
97
|
-
`- Create a pull request for the changes.`,
|
98
|
-
`- Go to the following URL to connect your workspace to Nx Cloud:`,
|
99
|
-
'',
|
100
|
-
`${connectCloudUrl}`,
|
101
|
-
],
|
102
|
-
});
|
103
|
-
}
|
104
|
-
}
|
57
|
+
const connectCloudUrl = await (0, url_shorten_1.createNxCloudOnboardingURL)(installationSource, token, usesGithub);
|
58
|
+
output_1.output.note({
|
59
|
+
title: `Your Nx Cloud workspace is ready.`,
|
60
|
+
bodyLines: [
|
61
|
+
`To claim it, connect it to your Nx Cloud account:`,
|
62
|
+
`- Commit and push your changes.`,
|
63
|
+
`- Create a pull request for the changes.`,
|
64
|
+
`- Go to the following URL to connect your workspace to Nx Cloud:`,
|
65
|
+
'',
|
66
|
+
`${connectCloudUrl}`,
|
67
|
+
],
|
68
|
+
});
|
69
|
+
return connectCloudUrl;
|
105
70
|
}
|
106
71
|
function addNxCloudOptionsToNxJson(tree, nxJson, token) {
|
107
72
|
nxJson ??= {
|
@@ -118,12 +83,11 @@ async function connectToNxCloud(tree, schema) {
|
|
118
83
|
schema.installationSource ??= 'user';
|
119
84
|
const nxJson = (0, nx_json_1.readNxJson)(tree);
|
120
85
|
if (nxJson?.neverConnectToCloud) {
|
121
|
-
|
122
|
-
|
123
|
-
};
|
86
|
+
printCloudConnectionDisabledMessage();
|
87
|
+
return null;
|
124
88
|
}
|
125
89
|
else {
|
126
|
-
const usesGithub = await (0, url_shorten_1.repoUsesGithub)(schema.github);
|
90
|
+
const usesGithub = schema.github ?? (await (0, url_shorten_1.repoUsesGithub)(schema.github));
|
127
91
|
let responseFromCreateNxCloudWorkspace;
|
128
92
|
// do NOT create Nx Cloud token (createNxCloudWorkspace)
|
129
93
|
// if user is using github and is running nx-connect
|
@@ -133,11 +97,8 @@ async function connectToNxCloud(tree, schema) {
|
|
133
97
|
await (0, format_changed_files_with_prettier_if_available_1.formatChangedFilesWithPrettierIfAvailable)(tree, {
|
134
98
|
silent: schema.hideFormatLogs,
|
135
99
|
});
|
100
|
+
return responseFromCreateNxCloudWorkspace.token;
|
136
101
|
}
|
137
|
-
return async () => await printSuccessMessage(responseFromCreateNxCloudWorkspace?.token, schema.installationSource, usesGithub);
|
138
102
|
}
|
139
103
|
}
|
140
|
-
function sleep(ms) {
|
141
|
-
return new Promise((resolve) => setTimeout(resolve, ms));
|
142
|
-
}
|
143
104
|
exports.default = connectToNxCloud;
|
@@ -1,4 +1,4 @@
|
|
1
|
-
export declare function
|
1
|
+
export declare function createNxCloudOnboardingURL(onboardingSource: string, accessToken?: string, usesGithub?: boolean, meta?: string): Promise<string>;
|
2
2
|
export declare function repoUsesGithub(github?: boolean, githubSlug?: string, apiUrl?: string): Promise<boolean>;
|
3
3
|
export declare function getURLifShortenFailed(usesGithub: boolean, githubSlug: string | null, apiUrl: string, source: string, accessToken?: string): string;
|
4
4
|
export declare function getNxCloudVersion(apiUrl: string): Promise<string | null>;
|
@@ -1,6 +1,6 @@
|
|
1
1
|
"use strict";
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
-
exports.
|
3
|
+
exports.createNxCloudOnboardingURL = createNxCloudOnboardingURL;
|
4
4
|
exports.repoUsesGithub = repoUsesGithub;
|
5
5
|
exports.getURLifShortenFailed = getURLifShortenFailed;
|
6
6
|
exports.getNxCloudVersion = getNxCloudVersion;
|
@@ -10,7 +10,7 @@ exports.compareCleanCloudVersions = compareCleanCloudVersions;
|
|
10
10
|
const devkit_exports_1 = require("../../devkit-exports");
|
11
11
|
const git_utils_1 = require("../../utils/git-utils");
|
12
12
|
const get_cloud_options_1 = require("./get-cloud-options");
|
13
|
-
async function
|
13
|
+
async function createNxCloudOnboardingURL(onboardingSource, accessToken, usesGithub, meta) {
|
14
14
|
const githubSlug = (0, git_utils_1.getGithubSlugOrNull)();
|
15
15
|
const apiUrl = (0, get_cloud_options_1.getCloudUrl)();
|
16
16
|
if (usesGithub === undefined || usesGithub === null) {
|
@@ -28,13 +28,14 @@ async function shortenedCloudUrl(installationSource, accessToken, usesGithub) {
|
|
28
28
|
${e}`);
|
29
29
|
return apiUrl;
|
30
30
|
}
|
31
|
-
const source = getSource(
|
31
|
+
const source = getSource(onboardingSource);
|
32
32
|
try {
|
33
33
|
const response = await require('axios').post(`${apiUrl}/nx-cloud/onboarding`, {
|
34
34
|
type: usesGithub ? 'GITHUB' : 'MANUAL',
|
35
35
|
source,
|
36
36
|
accessToken: usesGithub ? null : accessToken,
|
37
37
|
selectedRepositoryName: githubSlug === 'github' ? null : githubSlug,
|
38
|
+
meta,
|
38
39
|
});
|
39
40
|
if (!response?.data || response.data.message) {
|
40
41
|
throw new Error(response?.data?.message ?? 'Failed to shorten Nx Cloud URL');
|
@@ -67,11 +68,8 @@ function getSource(installationSource) {
|
|
67
68
|
else if (installationSource.includes('nx-connect')) {
|
68
69
|
return 'nx-connect';
|
69
70
|
}
|
70
|
-
else if (installationSource.includes('create-nx-workspace')) {
|
71
|
-
return 'create-nx-workspace';
|
72
|
-
}
|
73
71
|
else {
|
74
|
-
return
|
72
|
+
return installationSource;
|
75
73
|
}
|
76
74
|
}
|
77
75
|
function getURLifShortenFailed(usesGithub, githubSlug, apiUrl, source, accessToken) {
|
@@ -13,6 +13,7 @@ const loader_1 = require("./loader");
|
|
13
13
|
const utils_1 = require("./utils");
|
14
14
|
const error_types_1 = require("../error-types");
|
15
15
|
const native_1 = require("../../native");
|
16
|
+
const os_1 = require("os");
|
16
17
|
class LoadedNxPlugin {
|
17
18
|
constructor(plugin, pluginDefinition) {
|
18
19
|
this.name = plugin.name;
|
@@ -74,7 +75,9 @@ exports.nxPluginCache = new Map();
|
|
74
75
|
async function loadNxPlugins(plugins, root = workspace_root_1.workspaceRoot) {
|
75
76
|
performance.mark('loadNxPlugins:start');
|
76
77
|
const loadingMethod = process.env.NX_ISOLATE_PLUGINS === 'true' ||
|
77
|
-
(!native_1.IS_WASM &&
|
78
|
+
(!native_1.IS_WASM &&
|
79
|
+
(0, os_1.platform)() !== 'win32' &&
|
80
|
+
process.env.NX_ISOLATE_PLUGINS !== 'false')
|
78
81
|
? isolation_1.loadNxPluginInIsolation
|
79
82
|
: loader_1.loadNxPlugin;
|
80
83
|
plugins = await normalizePlugins(plugins, root);
|
@@ -8,6 +8,7 @@ exports.unloadDotEnvFile = unloadDotEnvFile;
|
|
8
8
|
const dotenv_1 = require("dotenv");
|
9
9
|
const dotenv_expand_1 = require("dotenv-expand");
|
10
10
|
const workspace_root_1 = require("../utils/workspace-root");
|
11
|
+
const node_path_1 = require("node:path");
|
11
12
|
function getEnvVariablesForBatchProcess(skipNxCache, captureStderr) {
|
12
13
|
return {
|
13
14
|
// User Process Env Variables override Dotenv Variables
|
@@ -158,13 +159,13 @@ function getEnvFilesForTask(task) {
|
|
158
159
|
function loadDotEnvFilesForTask(task, environmentVariables) {
|
159
160
|
const dotEnvFiles = getEnvFilesForTask(task);
|
160
161
|
for (const file of dotEnvFiles) {
|
161
|
-
loadAndExpandDotEnvFile(file, environmentVariables);
|
162
|
+
loadAndExpandDotEnvFile((0, node_path_1.join)(workspace_root_1.workspaceRoot, file), environmentVariables);
|
162
163
|
}
|
163
164
|
return environmentVariables;
|
164
165
|
}
|
165
166
|
function unloadDotEnvFiles(environmentVariables) {
|
166
167
|
for (const file of ['.env', '.local.env', '.env.local']) {
|
167
|
-
unloadDotEnvFile(file, environmentVariables);
|
168
|
+
unloadDotEnvFile((0, node_path_1.join)(workspace_root_1.workspaceRoot, file), environmentVariables);
|
168
169
|
}
|
169
170
|
return environmentVariables;
|
170
171
|
}
|
@@ -66,7 +66,7 @@ function validateNoAtomizedTasks(taskGraph, projectGraph) {
|
|
66
66
|
.filter((item, index, arr) => arr.indexOf(item) === index);
|
67
67
|
const moreInfoLines = [
|
68
68
|
`Please enable Nx Cloud or use the slower ${nonAtomizedTasks.join(',')} task${nonAtomizedTasks.length > 1 ? 's' : ''}.`,
|
69
|
-
'Learn more at https://nx.dev/ci/features/split-e2e-tasks#
|
69
|
+
'Learn more at https://nx.dev/ci/features/split-e2e-tasks#nx-cloud-is-required-to-run-atomized-tasks',
|
70
70
|
];
|
71
71
|
if (atomizedRootTasks.length === 1) {
|
72
72
|
output_1.output.error({
|
package/src/utils/git-utils.js
CHANGED
@@ -8,7 +8,9 @@ const child_process_1 = require("child_process");
|
|
8
8
|
const devkit_exports_1 = require("../devkit-exports");
|
9
9
|
function getGithubSlugOrNull() {
|
10
10
|
try {
|
11
|
-
const gitRemote = (0, child_process_1.execSync)('git remote -v'
|
11
|
+
const gitRemote = (0, child_process_1.execSync)('git remote -v', {
|
12
|
+
stdio: 'pipe',
|
13
|
+
}).toString();
|
12
14
|
// If there are no remotes, we default to github
|
13
15
|
if (!gitRemote || gitRemote.length === 0) {
|
14
16
|
return 'github';
|