nx 16.7.1 → 16.7.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 CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "nx",
3
- "version": "16.7.1",
3
+ "version": "16.7.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": {
@@ -32,7 +32,7 @@
32
32
  },
33
33
  "homepage": "https://nx.dev",
34
34
  "dependencies": {
35
- "@nrwl/tao": "16.7.1",
35
+ "@nrwl/tao": "16.7.2",
36
36
  "@parcel/watcher": "2.0.4",
37
37
  "@yarnpkg/lockfile": "^1.1.0",
38
38
  "@yarnpkg/parsers": "3.0.0-rc.46",
@@ -81,16 +81,16 @@
81
81
  }
82
82
  },
83
83
  "optionalDependencies": {
84
- "@nx/nx-darwin-arm64": "16.7.1",
85
- "@nx/nx-darwin-x64": "16.7.1",
86
- "@nx/nx-freebsd-x64": "16.7.1",
87
- "@nx/nx-linux-arm-gnueabihf": "16.7.1",
88
- "@nx/nx-linux-arm64-gnu": "16.7.1",
89
- "@nx/nx-linux-arm64-musl": "16.7.1",
90
- "@nx/nx-linux-x64-gnu": "16.7.1",
91
- "@nx/nx-linux-x64-musl": "16.7.1",
92
- "@nx/nx-win32-arm64-msvc": "16.7.1",
93
- "@nx/nx-win32-x64-msvc": "16.7.1"
84
+ "@nx/nx-darwin-arm64": "16.7.2",
85
+ "@nx/nx-darwin-x64": "16.7.2",
86
+ "@nx/nx-freebsd-x64": "16.7.2",
87
+ "@nx/nx-linux-arm-gnueabihf": "16.7.2",
88
+ "@nx/nx-linux-arm64-gnu": "16.7.2",
89
+ "@nx/nx-linux-arm64-musl": "16.7.2",
90
+ "@nx/nx-linux-x64-gnu": "16.7.2",
91
+ "@nx/nx-linux-x64-musl": "16.7.2",
92
+ "@nx/nx-win32-arm64-msvc": "16.7.2",
93
+ "@nx/nx-win32-x64-msvc": "16.7.2"
94
94
  },
95
95
  "nx-migrations": {
96
96
  "migrations": "./migrations.json",
@@ -177,5 +177,5 @@
177
177
  },
178
178
  "main": "./bin/nx.js",
179
179
  "type": "commonjs",
180
- "gitHead": "8b38708d6c18496711695499d07c95f3ecc31cc9"
180
+ "gitHead": "b024f44a1ad4e1773e80f6dc72f9d22766b950f9"
181
181
  }
@@ -1,10 +1,16 @@
1
1
  import { NxJsonConfiguration } from '../src/config/nx-json';
2
2
  import { ProjectConfiguration } from '../src/config/workspace-json-project-json';
3
3
  import { NxPluginV2 } from '../src/utils/nx-plugin';
4
+ import { PackageJson } from '../src/utils/package-json';
4
5
  export declare function getNxPackageJsonWorkspacesPlugin(root: string): NxPluginV2;
5
- export declare function buildProjectConfigurationFromPackageJson(packageJson: {
6
- name: string;
7
- }, path: string, nxJson: NxJsonConfiguration): ProjectConfiguration & {
6
+ export declare function createNodeFromPackageJson(pkgJsonPath: string, root: string): {
7
+ projects: {
8
+ [x: string]: ProjectConfiguration & {
9
+ name: string;
10
+ };
11
+ };
12
+ };
13
+ export declare function buildProjectConfigurationFromPackageJson(packageJson: PackageJson, path: string, nxJson: NxJsonConfiguration): ProjectConfiguration & {
8
14
  name: string;
9
15
  };
10
16
  /**
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.getGlobPatternsFromPackageManagerWorkspaces = exports.buildProjectConfigurationFromPackageJson = exports.getNxPackageJsonWorkspacesPlugin = void 0;
3
+ exports.getGlobPatternsFromPackageManagerWorkspaces = exports.buildProjectConfigurationFromPackageJson = exports.createNodeFromPackageJson = exports.getNxPackageJsonWorkspacesPlugin = void 0;
4
4
  const node_fs_1 = require("node:fs");
5
5
  const node_path_1 = require("node:path");
6
6
  const nx_json_1 = require("../src/config/nx-json");
@@ -9,6 +9,7 @@ const fileutils_1 = require("../src/utils/fileutils");
9
9
  const globs_1 = require("../src/utils/globs");
10
10
  const logger_1 = require("../src/utils/logger");
11
11
  const output_1 = require("../src/utils/output");
12
+ const package_json_1 = require("../src/utils/package-json");
12
13
  const path_1 = require("../src/utils/path");
13
14
  function getNxPackageJsonWorkspacesPlugin(root) {
14
15
  const readJson = (f) => (0, fileutils_1.readJsonFile)((0, node_path_1.join)(root, f));
@@ -16,18 +17,20 @@ function getNxPackageJsonWorkspacesPlugin(root) {
16
17
  name: 'nx-core-build-package-json-nodes',
17
18
  createNodes: [
18
19
  (0, globs_1.combineGlobPatterns)(getGlobPatternsFromPackageManagerWorkspaces(root, readJson)),
19
- (pkgJsonPath) => {
20
- const json = readJson(pkgJsonPath);
21
- return {
22
- projects: {
23
- [json.name]: buildProjectConfigurationFromPackageJson(json, pkgJsonPath, (0, nx_json_1.readNxJson)(root)),
24
- },
25
- };
26
- },
20
+ (p) => createNodeFromPackageJson(p, root),
27
21
  ],
28
22
  };
29
23
  }
30
24
  exports.getNxPackageJsonWorkspacesPlugin = getNxPackageJsonWorkspacesPlugin;
25
+ function createNodeFromPackageJson(pkgJsonPath, root) {
26
+ const json = (0, fileutils_1.readJsonFile)((0, node_path_1.join)(root, pkgJsonPath));
27
+ return {
28
+ projects: {
29
+ [json.name]: buildProjectConfigurationFromPackageJson(json, pkgJsonPath, (0, nx_json_1.readNxJson)(root)),
30
+ },
31
+ };
32
+ }
33
+ exports.createNodeFromPackageJson = createNodeFromPackageJson;
31
34
  function buildProjectConfigurationFromPackageJson(packageJson, path, nxJson) {
32
35
  var _a, _b, _c, _d;
33
36
  const normalizedPath = path.split('\\').join('/');
@@ -47,12 +50,8 @@ function buildProjectConfigurationFromPackageJson(packageJson, path, nxJson) {
47
50
  directory.startsWith(nxJson.workspaceLayout.appsDir)
48
51
  ? 'application'
49
52
  : 'library';
50
- return {
51
- root: directory,
52
- sourceRoot: directory,
53
- name,
54
- projectType,
55
- };
53
+ return Object.assign(Object.assign({ root: directory, sourceRoot: directory, name,
54
+ projectType }, packageJson.nx), { targets: (0, package_json_1.readTargetsFromPackageJson)(packageJson) });
56
55
  }
57
56
  exports.buildProjectConfigurationFromPackageJson = buildProjectConfigurationFromPackageJson;
58
57
  /**
@@ -1 +1 @@
1
- export declare const projectFilePatterns: string[];
1
+ export {};
@@ -1,4 +1,12 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.projectFilePatterns = void 0;
4
- exports.projectFilePatterns = ['package.json'];
3
+ const workspace_root_1 = require("../src/utils/workspace-root");
4
+ const package_json_workspaces_1 = require("./package-json-workspaces");
5
+ const plugin = {
6
+ name: 'nx-all-package-jsons-plugin',
7
+ createNodes: [
8
+ '*/**/package.json',
9
+ (f) => (0, package_json_workspaces_1.createNodeFromPackageJson)(f, workspace_root_1.workspaceRoot),
10
+ ],
11
+ };
12
+ module.exports = plugin;
@@ -1,4 +1,7 @@
1
- import { ProjectConfiguration } from '../src/config/workspace-json-project-json';
1
+ import { ProjectConfiguration, TargetConfiguration } from '../src/config/workspace-json-project-json';
2
2
  import { NxPluginV2 } from '../src/utils/nx-plugin';
3
+ import { PackageJson } from '../src/utils/package-json';
3
4
  export declare function getNxProjectJsonPlugin(root: string): NxPluginV2;
4
5
  export declare function buildProjectFromProjectJson(json: Partial<ProjectConfiguration>, path: string): ProjectConfiguration;
6
+ export declare function mergePackageJsonConfigurationWithProjectJson(p: ProjectConfiguration, root: string): void;
7
+ export declare function mergeNpmScriptsWithTargets(packageJson: PackageJson, targets: Record<string, TargetConfiguration>): Record<string, TargetConfiguration>;
@@ -1,9 +1,11 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.buildProjectFromProjectJson = exports.getNxProjectJsonPlugin = void 0;
3
+ exports.mergeNpmScriptsWithTargets = exports.mergePackageJsonConfigurationWithProjectJson = exports.buildProjectFromProjectJson = exports.getNxProjectJsonPlugin = void 0;
4
4
  const node_path_1 = require("node:path");
5
+ const node_fs_1 = require("node:fs");
5
6
  const workspaces_1 = require("../src/config/workspaces");
6
7
  const fileutils_1 = require("../src/utils/fileutils");
8
+ const package_json_1 = require("../src/utils/package-json");
7
9
  function getNxProjectJsonPlugin(root) {
8
10
  return {
9
11
  name: 'nx-core-build-project-json-nodes',
@@ -12,6 +14,7 @@ function getNxProjectJsonPlugin(root) {
12
14
  (file) => {
13
15
  const json = (0, fileutils_1.readJsonFile)((0, node_path_1.join)(root, file));
14
16
  const project = buildProjectFromProjectJson(json, file);
17
+ mergePackageJsonConfigurationWithProjectJson(project, root);
15
18
  return {
16
19
  projects: {
17
20
  [project.name]: project,
@@ -26,3 +29,37 @@ function buildProjectFromProjectJson(json, path) {
26
29
  return Object.assign({ name: (0, workspaces_1.toProjectName)(path), root: (0, node_path_1.dirname)(path) }, json);
27
30
  }
28
31
  exports.buildProjectFromProjectJson = buildProjectFromProjectJson;
32
+ function mergePackageJsonConfigurationWithProjectJson(p, root) {
33
+ if ((0, node_fs_1.existsSync)((0, node_path_1.join)(root, p.root, 'package.json'))) {
34
+ try {
35
+ const packageJson = (0, fileutils_1.readJsonFile)((0, node_path_1.join)(root, p.root, 'package.json'));
36
+ p.targets = mergeNpmScriptsWithTargets(packageJson, p.targets);
37
+ const { nx } = packageJson;
38
+ if (nx === null || nx === void 0 ? void 0 : nx.tags) {
39
+ p.tags = [...(p.tags || []), ...nx.tags];
40
+ }
41
+ if (nx === null || nx === void 0 ? void 0 : nx.implicitDependencies) {
42
+ p.implicitDependencies = [
43
+ ...(p.implicitDependencies || []),
44
+ ...nx.implicitDependencies,
45
+ ];
46
+ }
47
+ if (nx === null || nx === void 0 ? void 0 : nx.namedInputs) {
48
+ p.namedInputs = Object.assign(Object.assign({}, (p.namedInputs || {})), nx.namedInputs);
49
+ }
50
+ }
51
+ catch (e) {
52
+ // ignore json parser errors
53
+ }
54
+ }
55
+ }
56
+ exports.mergePackageJsonConfigurationWithProjectJson = mergePackageJsonConfigurationWithProjectJson;
57
+ function mergeNpmScriptsWithTargets(packageJson, targets) {
58
+ try {
59
+ return Object.assign(Object.assign({}, (0, package_json_1.readTargetsFromPackageJson)(packageJson)), (targets || {}));
60
+ }
61
+ catch (e) {
62
+ return targets;
63
+ }
64
+ }
65
+ exports.mergeNpmScriptsWithTargets = mergeNpmScriptsWithTargets;
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "$schema": "http://json-schema.org/draft-07/schema",
3
- "$id": "https://nx.dev/core-concepts/configuration#nxjson",
3
+ "$id": "https://nx.dev/reference/nx-json",
4
4
  "title": "JSON schema for Nx configuration",
5
5
  "type": "object",
6
6
  "properties": {
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "$schema": "http://json-schema.org/draft-07/schema",
3
- "$id": "https://nx.dev/project-schema",
3
+ "$id": "https://nx.dev/reference/project-configuration",
4
4
  "title": "JSON schema for Nx projects",
5
5
  "type": "object",
6
6
  "properties": {
@@ -1,11 +1,9 @@
1
- import { ProjectConfiguration, ProjectsConfigurations } from '../config/workspace-json-project-json';
1
+ import { ProjectsConfigurations } from '../config/workspace-json-project-json';
2
+ import { NxPluginV2 } from '../devkit-exports';
3
+ export declare const NX_ANGULAR_JSON_PLUGIN_NAME = "nx-angular-json-plugin";
4
+ export declare const NxAngularJsonPlugin: NxPluginV2;
2
5
  export declare function shouldMergeAngularProjects(root: string, includeProjectsFromAngularJson: boolean): boolean;
3
6
  export declare function isAngularPluginInstalled(): boolean;
4
- export declare function mergeAngularJsonAndProjects(projects: {
5
- [name: string]: ProjectConfiguration;
6
- }, angularCliWorkspaceRoot: string): {
7
- [name: string]: ProjectConfiguration;
8
- };
9
7
  export declare function toNewFormat(w: any): ProjectsConfigurations;
10
8
  export declare function toOldFormat(w: any): any;
11
9
  export declare function renamePropertyWithStableKeys(obj: any, from: string, to: string): void;
@@ -1,9 +1,19 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.renamePropertyWithStableKeys = exports.toOldFormat = exports.toNewFormat = exports.mergeAngularJsonAndProjects = exports.isAngularPluginInstalled = exports.shouldMergeAngularProjects = void 0;
3
+ exports.renamePropertyWithStableKeys = exports.toOldFormat = exports.toNewFormat = exports.isAngularPluginInstalled = exports.shouldMergeAngularProjects = exports.NxAngularJsonPlugin = exports.NX_ANGULAR_JSON_PLUGIN_NAME = void 0;
4
4
  const fs_1 = require("fs");
5
5
  const path = require("path");
6
6
  const fileutils_1 = require("../utils/fileutils");
7
+ exports.NX_ANGULAR_JSON_PLUGIN_NAME = 'nx-angular-json-plugin';
8
+ exports.NxAngularJsonPlugin = {
9
+ name: exports.NX_ANGULAR_JSON_PLUGIN_NAME,
10
+ createNodes: [
11
+ 'angular.json',
12
+ (f, ctx) => ({
13
+ projects: readAngularJson(ctx.workspaceRoot),
14
+ }),
15
+ ],
16
+ };
7
17
  function shouldMergeAngularProjects(root, includeProjectsFromAngularJson) {
8
18
  if ((0, fs_1.existsSync)(path.join(root, 'angular.json')) &&
9
19
  // Include projects from angular.json if explicitly required.
@@ -38,20 +48,6 @@ exports.isAngularPluginInstalled = isAngularPluginInstalled;
38
48
  function readAngularJson(angularCliWorkspaceRoot) {
39
49
  return toNewFormat((0, fileutils_1.readJsonFile)(path.join(angularCliWorkspaceRoot, 'angular.json'))).projects;
40
50
  }
41
- function mergeAngularJsonAndProjects(projects, angularCliWorkspaceRoot) {
42
- const res = readAngularJson(angularCliWorkspaceRoot);
43
- const folders = new Set();
44
- for (let k of Object.keys(res)) {
45
- folders.add(res[k].root);
46
- }
47
- for (let k of Object.keys(projects)) {
48
- if (!folders.has(projects[k].root)) {
49
- res[k] = projects[k];
50
- }
51
- }
52
- return res;
53
- }
54
- exports.mergeAngularJsonAndProjects = mergeAngularJsonAndProjects;
55
51
  function toNewFormat(w) {
56
52
  Object.values(w.projects || {}).forEach((projectConfig) => {
57
53
  if (projectConfig.architect) {
@@ -8,3 +8,8 @@ export { getExecutorInformation } from './command-line/run/executor-utils';
8
8
  export { readNxJson as readNxJsonFromDisk } from './config/nx-json';
9
9
  export { calculateDefaultProjectName } from './config/calculate-default-project-name';
10
10
  export { retrieveProjectConfigurationsWithAngularProjects } from './project-graph/utils/retrieve-workspace-files';
11
+ export { splitTarget } from './utils/split-target';
12
+ export { combineOptionsForExecutor } from './utils/params';
13
+ export { sortObjectByKeys } from './utils/object-sort';
14
+ export { stripIndent } from './utils/logger';
15
+ export { readModulePackageJson } from './utils/package-json';
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.retrieveProjectConfigurationsWithAngularProjects = exports.calculateDefaultProjectName = exports.readNxJsonFromDisk = exports.getExecutorInformation = exports.createTempNpmDirectory = void 0;
3
+ exports.readModulePackageJson = exports.stripIndent = exports.sortObjectByKeys = exports.combineOptionsForExecutor = exports.splitTarget = exports.retrieveProjectConfigurationsWithAngularProjects = exports.calculateDefaultProjectName = exports.readNxJsonFromDisk = exports.getExecutorInformation = exports.createTempNpmDirectory = void 0;
4
4
  /**
5
5
  * Note to developers: STOP! These exports are available via requireNx in @nx/devkit.
6
6
  *
@@ -16,3 +16,13 @@ var calculate_default_project_name_1 = require("./config/calculate-default-proje
16
16
  Object.defineProperty(exports, "calculateDefaultProjectName", { enumerable: true, get: function () { return calculate_default_project_name_1.calculateDefaultProjectName; } });
17
17
  var retrieve_workspace_files_1 = require("./project-graph/utils/retrieve-workspace-files");
18
18
  Object.defineProperty(exports, "retrieveProjectConfigurationsWithAngularProjects", { enumerable: true, get: function () { return retrieve_workspace_files_1.retrieveProjectConfigurationsWithAngularProjects; } });
19
+ var split_target_1 = require("./utils/split-target");
20
+ Object.defineProperty(exports, "splitTarget", { enumerable: true, get: function () { return split_target_1.splitTarget; } });
21
+ var params_1 = require("./utils/params");
22
+ Object.defineProperty(exports, "combineOptionsForExecutor", { enumerable: true, get: function () { return params_1.combineOptionsForExecutor; } });
23
+ var object_sort_1 = require("./utils/object-sort");
24
+ Object.defineProperty(exports, "sortObjectByKeys", { enumerable: true, get: function () { return object_sort_1.sortObjectByKeys; } });
25
+ var logger_1 = require("./utils/logger");
26
+ Object.defineProperty(exports, "stripIndent", { enumerable: true, get: function () { return logger_1.stripIndent; } });
27
+ var package_json_1 = require("./utils/package-json");
28
+ Object.defineProperty(exports, "readModulePackageJson", { enumerable: true, get: function () { return package_json_1.readModulePackageJson; } });
@@ -118,7 +118,6 @@ function getRelativeProjectJsonSchemaPath(tree, project) {
118
118
  }
119
119
  exports.getRelativeProjectJsonSchemaPath = getRelativeProjectJsonSchemaPath;
120
120
  function readAndCombineAllProjectConfigurations(tree) {
121
- const nxJson = (0, nx_json_1.readNxJson)(tree);
122
121
  /**
123
122
  * We can't update projects that come from plugins anyways, so we are going
124
123
  * to ignore them for now. Plugins should add their own add/create/update methods
@@ -134,16 +133,16 @@ function readAndCombineAllProjectConfigurations(tree) {
134
133
  const deletedFiles = findDeletedProjectFiles(tree, patterns);
135
134
  const projectFiles = [...globbedFiles, ...createdFiles].filter((r) => deletedFiles.indexOf(r) === -1);
136
135
  const rootMap = new Map();
137
- return projectFiles.reduce((projects, projectFile) => {
136
+ for (const projectFile of projectFiles) {
138
137
  if ((0, path_1.basename)(projectFile) === 'project.json') {
139
138
  const json = (0, json_1.readJson)(tree, projectFile);
140
139
  const config = (0, project_json_1.buildProjectFromProjectJson)(json, projectFile);
141
- (0, project_configuration_utils_1.mergeProjectConfigurationIntoProjectsConfigurations)(projects, rootMap, config, projectFile);
140
+ (0, project_configuration_utils_1.mergeProjectConfigurationIntoRootMap)(rootMap, config, projectFile);
142
141
  }
143
142
  else {
144
143
  const packageJson = (0, json_1.readJson)(tree, projectFile);
145
144
  const config = (0, package_json_workspaces_1.buildProjectConfigurationFromPackageJson)(packageJson, projectFile, (0, nx_json_1.readNxJson)(tree));
146
- (0, project_configuration_utils_1.mergeProjectConfigurationIntoProjectsConfigurations)(projects, rootMap,
145
+ (0, project_configuration_utils_1.mergeProjectConfigurationIntoRootMap)(rootMap,
147
146
  // Inferred targets, tags, etc don't show up when running generators
148
147
  // This is to help avoid running into issues when trying to update the workspace
149
148
  {
@@ -151,8 +150,8 @@ function readAndCombineAllProjectConfigurations(tree) {
151
150
  root: config.root,
152
151
  }, projectFile);
153
152
  }
154
- return projects;
155
- }, {});
153
+ }
154
+ return (0, project_configuration_utils_1.readProjectConfigurationsFromRootMap)(rootMap);
156
155
  }
157
156
  /**
158
157
  * Used to ensure that projects created during
@@ -23,12 +23,16 @@ const processProjectGraph = (graph, context) => tslib_1.__awaiter(void 0, void 0
23
23
  let parsedLockFile;
24
24
  if (lockFileNeedsReprocessing(lockHash)) {
25
25
  parsedLockFile = (0, lock_file_1.parseLockFile)();
26
- writeLastProcessedLockfileHash(lockHash, parsedLockFile);
26
+ if (parsedLockFile) {
27
+ writeLastProcessedLockfileHash(lockHash, parsedLockFile);
28
+ }
27
29
  }
28
30
  else {
29
31
  parsedLockFile = readParsedLockFile();
30
32
  }
31
- builder.mergeProjectGraph(parsedLockFile);
33
+ if (parsedLockFile) {
34
+ builder.mergeProjectGraph(parsedLockFile);
35
+ }
32
36
  }
33
37
  }
34
38
  perf_hooks_1.performance.mark('build typescript dependencies - start');
@@ -18,13 +18,18 @@ function parseYarnLockfile(lockFileContent, packageJson, builder) {
18
18
  addDependencies(groupedDependencies, builder, keyMap);
19
19
  }
20
20
  exports.parseYarnLockfile = parseYarnLockfile;
21
- function getPackageNames(keys) {
22
- const packageNames = new Set();
21
+ function getPackageNameKeyPairs(keys) {
22
+ const result = new Map();
23
23
  keys.split(', ').forEach((key) => {
24
24
  const packageName = key.slice(0, key.indexOf('@', 1));
25
- packageNames.add(packageName);
25
+ if (result.has(packageName)) {
26
+ result.get(packageName).add(key);
27
+ }
28
+ else {
29
+ result.set(packageName, new Set([key]));
30
+ }
26
31
  });
27
- return Array.from(packageNames);
32
+ return result;
28
33
  }
29
34
  function addNodes(dependencies, packageJson, builder, keyMap, isBerry) {
30
35
  const nodes = new Map();
@@ -34,10 +39,13 @@ function addNodes(dependencies, packageJson, builder, keyMap, isBerry) {
34
39
  if (snapshot.linkType === 'soft' || keys.includes('@patch:')) {
35
40
  return;
36
41
  }
37
- const packageNames = getPackageNames(keys);
38
- packageNames.forEach((packageName) => {
39
- const version = findVersion(packageName, keys.split(', ')[0], snapshot, isBerry);
40
- keys.split(', ').forEach((key) => {
42
+ const nameKeyPairs = getPackageNameKeyPairs(keys);
43
+ nameKeyPairs.forEach((keySet, packageName) => {
44
+ const keysArray = Array.from(keySet);
45
+ // use key relevant to the package name
46
+ const version = findVersion(packageName, keysArray[0], snapshot, isBerry);
47
+ // use keys linked to the extracted package name
48
+ keysArray.forEach((key) => {
41
49
  var _a;
42
50
  // we don't need to keep duplicates, we can just track the keys
43
51
  const existingNode = (_a = nodes.get(packageName)) === null || _a === void 0 ? void 0 : _a.get(version);
@@ -111,7 +119,7 @@ function findHoistedNode(packageName, versionMap, combinedDeps) {
111
119
  }
112
120
  }
113
121
  function findVersion(packageName, key, snapshot, isBerry) {
114
- const versionRange = key.slice(packageName.length + 1);
122
+ const versionRange = key.slice(key.indexOf('@', 1) + 1);
115
123
  // check for alias packages
116
124
  const isAlias = isBerry
117
125
  ? snapshot.resolution && !snapshot.resolution.startsWith(`${packageName}@`)
@@ -2,11 +2,6 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.normalizeImplicitDependencies = exports.normalizeProjectTargets = exports.normalizeProjectNodes = void 0;
4
4
  const tslib_1 = require("tslib");
5
- const path_1 = require("path");
6
- const fs_1 = require("fs");
7
- const workspace_root_1 = require("../../utils/workspace-root");
8
- const project_graph_utils_1 = require("../../utils/project-graph-utils");
9
- const fileutils_1 = require("../../utils/fileutils");
10
5
  const find_matching_projects_1 = require("../../utils/find-matching-projects");
11
6
  const logger_1 = require("../../utils/logger");
12
7
  const project_configuration_utils_1 = require("../utils/project-configuration-utils");
@@ -27,33 +22,6 @@ function normalizeProjectNodes(ctx, builder, nxJson) {
27
22
  }, {});
28
23
  for (const key of projects) {
29
24
  const p = ctx.projectsConfigurations.projects[key];
30
- const projectRoot = (0, path_1.join)(workspace_root_1.workspaceRoot, p.root);
31
- // Todo(@AgentEnder) we can move a lot of this to
32
- // builtin plugin inside workspaces.ts, but there would be some functional differences
33
- // - The plugin would only apply to package.json files found via the workspaces globs
34
- // - This means that scripts / tags / etc from the `nx` property wouldn't be read if a project
35
- // is being found by project.json and not included in the workspaces configuration. Maybe this is fine?
36
- if ((0, fs_1.existsSync)((0, path_1.join)(projectRoot, 'package.json'))) {
37
- p.targets = (0, project_graph_utils_1.mergeNpmScriptsWithTargets)(projectRoot, p.targets);
38
- try {
39
- const { nx } = (0, fileutils_1.readJsonFile)((0, path_1.join)(projectRoot, 'package.json'));
40
- if (nx === null || nx === void 0 ? void 0 : nx.tags) {
41
- p.tags = [...(p.tags || []), ...nx.tags];
42
- }
43
- if (nx === null || nx === void 0 ? void 0 : nx.implicitDependencies) {
44
- p.implicitDependencies = [
45
- ...(p.implicitDependencies || []),
46
- ...nx.implicitDependencies,
47
- ];
48
- }
49
- if (nx === null || nx === void 0 ? void 0 : nx.namedInputs) {
50
- p.namedInputs = Object.assign(Object.assign({}, (p.namedInputs || {})), nx.namedInputs);
51
- }
52
- }
53
- catch (_c) {
54
- // ignore json parser errors
55
- }
56
- }
57
25
  p.implicitDependencies = normalizeImplicitDependencies(key, p.implicitDependencies, partialProjectGraphNodes);
58
26
  p.targets = normalizeProjectTargets(p, nxJson.targetDefaults, key);
59
27
  // TODO: remove in v16
@@ -21,7 +21,7 @@ export declare function buildProjectGraphWithoutDaemon(): Promise<ProjectGraph>;
21
21
  * * It is running in the docker container.
22
22
  * * The daemon process is disabled because of the previous error when starting the daemon.
23
23
  * * `NX_DAEMON` is set to `false`.
24
- * * `useDaemon` is set to false in `nx.json`
24
+ * * `useDaemonProcess` is set to false in the options of the tasks runner inside `nx.json`
25
25
  *
26
26
  * `NX_DAEMON` env variable takes precedence:
27
27
  * * If it is set to true, the daemon will always be used.
@@ -95,7 +95,7 @@ function handleProjectGraphError(opts, e) {
95
95
  * * It is running in the docker container.
96
96
  * * The daemon process is disabled because of the previous error when starting the daemon.
97
97
  * * `NX_DAEMON` is set to `false`.
98
- * * `useDaemon` is set to false in `nx.json`
98
+ * * `useDaemonProcess` is set to false in the options of the tasks runner inside `nx.json`
99
99
  *
100
100
  * `NX_DAEMON` env variable takes precedence:
101
101
  * * If it is set to true, the daemon will always be used.
@@ -2,12 +2,13 @@ import { NxJsonConfiguration, TargetDefaults } from '../../config/nx-json';
2
2
  import { ProjectGraphExternalNode } from '../../config/project-graph';
3
3
  import { ProjectConfiguration, TargetConfiguration } from '../../config/workspace-json-project-json';
4
4
  import { NxPluginV2 } from '../../utils/nx-plugin';
5
- export declare function mergeProjectConfigurationIntoProjectsConfigurations(existingProjects: Record<string, ProjectConfiguration>, existingProjectRootMap: Map<string, string>, project: ProjectConfiguration, file: string): void;
5
+ export declare function mergeProjectConfigurationIntoRootMap(projectRootMap: Map<string, ProjectConfiguration>, project: ProjectConfiguration, file: string): void;
6
6
  export declare function buildProjectsConfigurationsFromProjectPathsAndPlugins(nxJson: NxJsonConfiguration, projectFiles: string[], // making this parameter allows devkit to pick up newly created projects
7
7
  plugins: NxPluginV2[], root?: string): {
8
8
  projects: Record<string, ProjectConfiguration>;
9
9
  externalNodes: Record<string, ProjectGraphExternalNode>;
10
10
  };
11
+ export declare function readProjectConfigurationsFromRootMap(projectRootMap: Map<string, ProjectConfiguration>): Record<string, ProjectConfiguration>;
11
12
  export declare function mergeTargetConfigurations(projectConfiguration: ProjectConfiguration, target: string, targetDefaults: TargetDefaults[string]): TargetConfiguration;
12
13
  export declare function resolveNxTokensInOptions<T extends Object | Array<unknown>>(object: T, project: ProjectConfiguration, key: string): T;
13
14
  export declare function readTargetDefaultsForTarget(targetName: string, targetDefaults: TargetDefaults, executor?: string): TargetDefaults[string];
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.readTargetDefaultsForTarget = exports.resolveNxTokensInOptions = exports.mergeTargetConfigurations = exports.buildProjectsConfigurationsFromProjectPathsAndPlugins = exports.mergeProjectConfigurationIntoProjectsConfigurations = void 0;
3
+ exports.readTargetDefaultsForTarget = exports.resolveNxTokensInOptions = exports.mergeTargetConfigurations = exports.readProjectConfigurationsFromRootMap = exports.buildProjectsConfigurationsFromProjectPathsAndPlugins = exports.mergeProjectConfigurationIntoRootMap = void 0;
4
4
  const tslib_1 = require("tslib");
5
5
  const node_path_1 = require("node:path");
6
6
  const package_json_workspaces_1 = require("../../../plugins/package-json-workspaces");
@@ -8,38 +8,27 @@ const project_json_1 = require("../../../plugins/project-json");
8
8
  const logger_1 = require("../../utils/logger");
9
9
  const workspace_root_1 = require("../../utils/workspace-root");
10
10
  const minimatch = require("minimatch");
11
- function mergeProjectConfigurationIntoProjectsConfigurations(
12
- // projectName -> ProjectConfiguration
13
- existingProjects,
14
- // projectRoot -> projectName
15
- existingProjectRootMap, project,
11
+ function mergeProjectConfigurationIntoRootMap(projectRootMap, project,
16
12
  // project.json is a special case, so we need to detect it.
17
13
  file) {
18
- let matchingProjectName = existingProjectRootMap.get(project.root);
19
- if (!matchingProjectName) {
20
- existingProjects[project.name] = project;
21
- existingProjectRootMap.set(project.root, project.name);
14
+ const matchingProject = projectRootMap.get(project.root);
15
+ if (!matchingProject) {
16
+ projectRootMap.set(project.root, project);
22
17
  return;
23
- // There are some special cases for handling project.json - mainly
24
- // that it should override any name the project already has.
25
18
  }
26
19
  else if (project.name &&
27
- project.name !== matchingProjectName &&
20
+ project.name !== matchingProject.name &&
28
21
  (0, node_path_1.basename)(file) === 'project.json') {
29
- // Copy config to new name
30
- existingProjects[project.name] = existingProjects[matchingProjectName];
31
- // Update name in project config
32
- existingProjects[project.name].name = project.name;
33
- // Update root map to point to new name
34
- existingProjectRootMap[project.root] = project.name;
35
- // Remove entry for old name
36
- delete existingProjects[matchingProjectName];
37
- // Update name that config should be merged to
38
- matchingProjectName = project.name;
22
+ // `name` inside project.json overrides any names from
23
+ // inference plugins
24
+ matchingProject.name = project.name;
39
25
  }
40
- const matchingProject = existingProjects[matchingProjectName];
41
- // This handles top level properties that are overwritten. `srcRoot`, `projectType`, or fields that Nx doesn't know about.
42
- const updatedProjectConfiguration = Object.assign(Object.assign(Object.assign({}, matchingProject), project), { name: matchingProjectName });
26
+ // This handles top level properties that are overwritten.
27
+ // e.g. `srcRoot`, `projectType`, or other fields that shouldn't be extended
28
+ // Note: `name` is set specifically here to keep it from changing. The name is
29
+ // always determined by the first inference plugin to ID a project, unless it has
30
+ // a project.json in which case it was already updated above.
31
+ const updatedProjectConfiguration = Object.assign(Object.assign(Object.assign({}, matchingProject), project), { name: matchingProject.name });
43
32
  // The next blocks handle properties that should be themselves merged (e.g. targets, tags, and implicit dependencies)
44
33
  if (project.tags && matchingProject.tags) {
45
34
  updatedProjectConfiguration.tags = matchingProject.tags.concat(project.tags);
@@ -54,18 +43,14 @@ file) {
54
43
  if (project.targets && matchingProject.targets) {
55
44
  updatedProjectConfiguration.targets = Object.assign(Object.assign({}, matchingProject.targets), project.targets);
56
45
  }
57
- if (updatedProjectConfiguration.name !== matchingProject.name) {
58
- delete existingProjects[matchingProject.name];
59
- }
60
- existingProjects[updatedProjectConfiguration.name] =
61
- updatedProjectConfiguration;
46
+ projectRootMap.set(updatedProjectConfiguration.root, updatedProjectConfiguration);
62
47
  }
63
- exports.mergeProjectConfigurationIntoProjectsConfigurations = mergeProjectConfigurationIntoProjectsConfigurations;
48
+ exports.mergeProjectConfigurationIntoRootMap = mergeProjectConfigurationIntoRootMap;
64
49
  function buildProjectsConfigurationsFromProjectPathsAndPlugins(nxJson, projectFiles, // making this parameter allows devkit to pick up newly created projects
65
50
  plugins, root = workspace_root_1.workspaceRoot) {
66
- var _a;
51
+ var _a, _b;
52
+ var _c;
67
53
  const projectRootMap = new Map();
68
- const projects = {};
69
54
  const externalNodes = {};
70
55
  // We push the nx core node builder onto the end, s.t. it overwrites any user specified behavior
71
56
  plugins.push((0, package_json_workspaces_1.getNxPackageJsonWorkspacesPlugin)(root), (0, project_json_1.getNxProjectJsonPlugin)(root));
@@ -78,20 +63,56 @@ plugins, root = workspace_root_1.workspaceRoot) {
78
63
  for (const file of projectFiles) {
79
64
  if (minimatch(file, pattern)) {
80
65
  const { projects: projectNodes, externalNodes: pluginExternalNodes } = configurationConstructor(file, {
81
- projectsConfigurations: projects,
82
66
  nxJsonConfiguration: nxJson,
83
67
  workspaceRoot: root,
84
68
  });
85
69
  for (const node in projectNodes) {
86
- mergeProjectConfigurationIntoProjectsConfigurations(projects, projectRootMap, projectNodes[node], file);
70
+ (_b = (_c = projectNodes[node]).name) !== null && _b !== void 0 ? _b : (_c.name = node);
71
+ mergeProjectConfigurationIntoRootMap(projectRootMap, projectNodes[node], file);
87
72
  }
88
73
  Object.assign(externalNodes, pluginExternalNodes);
89
74
  }
90
75
  }
91
76
  }
92
- return { projects, externalNodes };
77
+ return {
78
+ projects: readProjectConfigurationsFromRootMap(projectRootMap),
79
+ externalNodes,
80
+ };
93
81
  }
94
82
  exports.buildProjectsConfigurationsFromProjectPathsAndPlugins = buildProjectsConfigurationsFromProjectPathsAndPlugins;
83
+ function readProjectConfigurationsFromRootMap(projectRootMap) {
84
+ var _a;
85
+ const projects = {};
86
+ // If there are projects that have the same name, that is an error.
87
+ // This object tracks name -> (all roots of projects with that name)
88
+ // to provide better error messaging.
89
+ const errors = new Map();
90
+ for (const [root, configuration] of projectRootMap.entries()) {
91
+ if (!configuration.name) {
92
+ throw new Error(`Project at ${root} has no name provided.`);
93
+ }
94
+ else if (configuration.name in projects) {
95
+ let rootErrors = (_a = errors.get(configuration.name)) !== null && _a !== void 0 ? _a : [
96
+ projects[configuration.name].root,
97
+ ];
98
+ rootErrors.push(root);
99
+ errors.set(configuration.name, rootErrors);
100
+ }
101
+ else {
102
+ projects[configuration.name] = configuration;
103
+ }
104
+ }
105
+ if (errors.size > 0) {
106
+ throw new Error([
107
+ `The following projects are defined in multiple locations:`,
108
+ ...Array.from(errors.entries()).map(([project, roots]) => [`- ${project}: `, ...roots.map((r) => ` - ${r}`)].join('\n')),
109
+ '',
110
+ "To fix this, set a unique name for each project in a project.json inside the project's root. If the project does not currently have a project.json, you can create one that contains only a name.",
111
+ ].join('\n'));
112
+ }
113
+ return projects;
114
+ }
115
+ exports.readProjectConfigurationsFromRootMap = readProjectConfigurationsFromRootMap;
95
116
  function mergeTargetConfigurations(projectConfiguration, target, targetDefaults) {
96
117
  var _a;
97
118
  const targetConfiguration = (_a = projectConfiguration.targets) === null || _a === void 0 ? void 0 : _a[target];
@@ -66,8 +66,12 @@ function retrieveProjectConfigurationsWithAngularProjects(workspaceRoot, nxJson)
66
66
  var _a;
67
67
  return tslib_1.__awaiter(this, void 0, void 0, function* () {
68
68
  const plugins = yield (0, nx_plugin_1.loadNxPlugins)((_a = nxJson === null || nxJson === void 0 ? void 0 : nxJson.plugins) !== null && _a !== void 0 ? _a : [], (0, installation_directory_1.getNxRequirePaths)(workspaceRoot), workspaceRoot);
69
+ if ((0, angular_json_1.shouldMergeAngularProjects)(workspaceRoot, true) &&
70
+ !plugins.some((p) => p.name === angular_json_1.NX_ANGULAR_JSON_PLUGIN_NAME)) {
71
+ plugins.push(angular_json_1.NxAngularJsonPlugin);
72
+ }
69
73
  const globs = configurationGlobs(workspaceRoot, plugins);
70
- return _retrieveProjectConfigurations(workspaceRoot, nxJson, plugins, globs, true);
74
+ return _retrieveProjectConfigurations(workspaceRoot, nxJson, plugins, globs);
71
75
  });
72
76
  }
73
77
  exports.retrieveProjectConfigurationsWithAngularProjects = retrieveProjectConfigurationsWithAngularProjects;
@@ -81,10 +85,10 @@ function retrieveProjectConfigurationsSync(workspaceRoot, nxJson) {
81
85
  return _retrieveProjectConfigurations(workspaceRoot, nxJson, plugins, globs);
82
86
  }
83
87
  exports.retrieveProjectConfigurationsSync = retrieveProjectConfigurationsSync;
84
- function _retrieveProjectConfigurations(workspaceRoot, nxJson, plugins, globs, includeProjectsFromAngularJson = false) {
88
+ function _retrieveProjectConfigurations(workspaceRoot, nxJson, plugins, globs) {
85
89
  const { getProjectConfigurations } = require('../../native');
86
90
  return getProjectConfigurations(workspaceRoot, globs, (configs) => {
87
- const projectConfigurations = createProjectConfigurations(workspaceRoot, nxJson, configs, plugins, includeProjectsFromAngularJson);
91
+ const projectConfigurations = createProjectConfigurations(workspaceRoot, nxJson, configs, plugins);
88
92
  return {
89
93
  projectNodes: projectConfigurations.projects,
90
94
  externalNodes: projectConfigurations.externalNodes,
@@ -131,13 +135,10 @@ function buildAllWorkspaceFiles(projectFileMap, globalFiles) {
131
135
  perf_hooks_1.performance.measure('get-all-workspace-files', 'get-all-workspace-files:start', 'get-all-workspace-files:end');
132
136
  return fileData;
133
137
  }
134
- function createProjectConfigurations(workspaceRoot, nxJson, configFiles, plugins, includeProjectsFromAngularJson = false) {
138
+ function createProjectConfigurations(workspaceRoot, nxJson, configFiles, plugins) {
135
139
  perf_hooks_1.performance.mark('build-project-configs:start');
136
140
  const { projects, externalNodes } = (0, project_configuration_utils_1.buildProjectsConfigurationsFromProjectPathsAndPlugins)(nxJson, configFiles, plugins, workspaceRoot);
137
141
  let projectConfigurations = projects;
138
- if ((0, angular_json_1.shouldMergeAngularProjects)(workspaceRoot, includeProjectsFromAngularJson)) {
139
- projectConfigurations = (0, angular_json_1.mergeAngularJsonAndProjects)(projectConfigurations, workspaceRoot);
140
- }
141
142
  perf_hooks_1.performance.mark('build-project-configs:end');
142
143
  perf_hooks_1.performance.measure('build-project-configs', 'build-project-configs:start', 'build-project-configs:end');
143
144
  return {
@@ -8,7 +8,6 @@ import { ProjectGraphDependencyWithFile } from '../project-graph/project-graph-b
8
8
  * Context for {@link CreateNodesFunction}
9
9
  */
10
10
  export interface CreateNodesContext {
11
- readonly projectsConfigurations: Record<string, ProjectConfiguration>;
12
11
  readonly nxJsonConfiguration: NxJsonConfiguration;
13
12
  readonly workspaceRoot: string;
14
13
  }
@@ -17,6 +17,7 @@ const installation_directory_1 = require("./installation-directory");
17
17
  const typescript_1 = require("../plugins/js/utils/typescript");
18
18
  const retrieve_workspace_files_1 = require("../project-graph/utils/retrieve-workspace-files");
19
19
  const globs_1 = require("./globs");
20
+ const angular_json_1 = require("../adapter/angular-json");
20
21
  tslib_1.__exportStar(require("./nx-plugin.deprecated"), exports);
21
22
  // Short lived cache (cleared between cmd runs)
22
23
  // holding resolved nx plugin objects.
@@ -113,6 +114,9 @@ function loadNxPlugins(plugins, paths = (0, installation_directory_1.getNxRequir
113
114
  const jsPlugin = yield Promise.resolve().then(() => require('../plugins/js'));
114
115
  jsPlugin.name = 'nx-js-graph-plugin';
115
116
  result.push(jsPlugin);
117
+ if ((0, angular_json_1.shouldMergeAngularProjects)(root, false)) {
118
+ result.push(angular_json_1.NxAngularJsonPlugin);
119
+ }
116
120
  plugins !== null && plugins !== void 0 ? plugins : (plugins = []);
117
121
  for (const plugin of plugins) {
118
122
  result.push(yield loadNxPluginAsync(plugin, paths, root));
@@ -122,6 +126,9 @@ function loadNxPlugins(plugins, paths = (0, installation_directory_1.getNxRequir
122
126
  }
123
127
  exports.loadNxPlugins = loadNxPlugins;
124
128
  function ensurePluginIsV2(plugin) {
129
+ if (isNxPluginV2(plugin)) {
130
+ return plugin;
131
+ }
125
132
  if (isNxPluginV1(plugin) && plugin.projectFilePatterns) {
126
133
  return Object.assign(Object.assign({}, plugin), { createNodes: [
127
134
  `*/**/${(0, globs_1.combineGlobPatterns)(plugin.projectFilePatterns)}`,
@@ -66,6 +66,7 @@ export declare function readNxMigrateConfig(json: Partial<PackageJson>): NxMigra
66
66
  packageGroup?: ArrayPackageGroup;
67
67
  };
68
68
  export declare function buildTargetFromScript(script: string, nx: NxProjectPackageJsonConfiguration): TargetConfiguration;
69
+ export declare function readTargetsFromPackageJson({ scripts, nx }: PackageJson): Record<string, TargetConfiguration<any>>;
69
70
  /**
70
71
  * Uses `require.resolve` to read the package.json for a module.
71
72
  *
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.readModulePackageJson = exports.readModulePackageJsonWithoutFallbacks = exports.buildTargetFromScript = exports.readNxMigrateConfig = exports.normalizePackageGroup = void 0;
3
+ exports.readModulePackageJson = exports.readModulePackageJsonWithoutFallbacks = exports.readTargetsFromPackageJson = exports.buildTargetFromScript = exports.readNxMigrateConfig = exports.normalizePackageGroup = void 0;
4
4
  const fs_1 = require("fs");
5
5
  const path_1 = require("path");
6
6
  const fileutils_1 = require("./fileutils");
@@ -35,6 +35,16 @@ function buildTargetFromScript(script, nx) {
35
35
  return Object.assign(Object.assign({}, nxTargetConfiguration), { executor: 'nx:run-script', options: Object.assign(Object.assign({}, (nxTargetConfiguration.options || {})), { script }) });
36
36
  }
37
37
  exports.buildTargetFromScript = buildTargetFromScript;
38
+ function readTargetsFromPackageJson({ scripts, nx }) {
39
+ const res = {};
40
+ Object.keys(scripts || {}).forEach((script) => {
41
+ if (!(nx === null || nx === void 0 ? void 0 : nx.includedScripts) || (nx === null || nx === void 0 ? void 0 : nx.includedScripts.includes(script))) {
42
+ res[script] = buildTargetFromScript(script, nx);
43
+ }
44
+ });
45
+ return res;
46
+ }
47
+ exports.readTargetsFromPackageJson = readTargetsFromPackageJson;
38
48
  /**
39
49
  * Uses `require.resolve` to read the package.json for a module.
40
50
  *
@@ -47,9 +47,7 @@ function getPackageManagerCommand(packageManager = detectPackageManager(), root
47
47
  const yarnVersion = getPackageManagerVersion('yarn', root);
48
48
  const useBerry = (0, semver_1.gte)(yarnVersion, '2.0.0');
49
49
  return {
50
- preInstall: useBerry
51
- ? 'yarn set version stable'
52
- : 'yarn set version classic',
50
+ preInstall: `yarn set version ${yarnVersion}`,
53
51
  install: 'yarn',
54
52
  ciInstall: useBerry
55
53
  ? 'yarn install --immutable'
@@ -1,8 +1,6 @@
1
1
  import { ProjectGraph, ProjectGraphProjectNode } from '../config/project-graph';
2
- import { TargetConfiguration } from '../config/workspace-json-project-json';
3
2
  export declare function projectHasTarget(project: ProjectGraphProjectNode, target: string): boolean;
4
3
  export declare function projectHasTargetAndConfiguration(project: ProjectGraphProjectNode, target: string, configuration: string): any;
5
- export declare function mergeNpmScriptsWithTargets(projectRoot: string, targets: any): Record<string, TargetConfiguration>;
6
4
  export declare function getSourceDirOfDependentProjects(projectName: string, projectGraph?: ProjectGraph): [projectDirs: string[], warnings: string[]];
7
5
  /**
8
6
  * Find all internal project dependencies.
@@ -1,9 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.findAllProjectNodeDependencies = exports.getSourceDirOfDependentProjects = exports.mergeNpmScriptsWithTargets = exports.projectHasTargetAndConfiguration = exports.projectHasTarget = void 0;
4
- const package_json_1 = require("./package-json");
5
- const path_1 = require("path");
6
- const fileutils_1 = require("./fileutils");
3
+ exports.findAllProjectNodeDependencies = exports.getSourceDirOfDependentProjects = exports.projectHasTargetAndConfiguration = exports.projectHasTarget = void 0;
7
4
  const project_graph_1 = require("../project-graph/project-graph");
8
5
  function projectHasTarget(project, target) {
9
6
  return !!(project.data &&
@@ -17,23 +14,6 @@ function projectHasTargetAndConfiguration(project, target, configuration) {
17
14
  project.data.targets[target].configurations[configuration]);
18
15
  }
19
16
  exports.projectHasTargetAndConfiguration = projectHasTargetAndConfiguration;
20
- function mergeNpmScriptsWithTargets(projectRoot, targets) {
21
- try {
22
- const { scripts, nx } = (0, fileutils_1.readJsonFile)((0, path_1.join)(projectRoot, 'package.json'));
23
- const res = {};
24
- // handle no scripts
25
- Object.keys(scripts || {}).forEach((script) => {
26
- if (!(nx === null || nx === void 0 ? void 0 : nx.includedScripts) || (nx === null || nx === void 0 ? void 0 : nx.includedScripts.includes(script))) {
27
- res[script] = (0, package_json_1.buildTargetFromScript)(script, nx);
28
- }
29
- });
30
- return Object.assign(Object.assign({}, res), (targets || {}));
31
- }
32
- catch (e) {
33
- return targets;
34
- }
35
- }
36
- exports.mergeNpmScriptsWithTargets = mergeNpmScriptsWithTargets;
37
17
  function getSourceDirOfDependentProjects(projectName, projectGraph = (0, project_graph_1.readCachedProjectGraph)()) {
38
18
  if (!projectGraph.nodes[projectName]) {
39
19
  throw new Error(`Couldn't find project "${projectName}" in this Nx workspace`);
@@ -10,3 +10,15 @@ jest.mock('fs', () => {
10
10
  }
11
11
  } });
12
12
  });
13
+ // @ts-ignore
14
+ jest.mock('node:fs', () => {
15
+ const mockFs = require('memfs').fs;
16
+ return Object.assign(Object.assign({}, mockFs), { existsSync(path) {
17
+ if (path.endsWith('.node')) {
18
+ return true;
19
+ }
20
+ else {
21
+ return mockFs.existsSync(path);
22
+ }
23
+ } });
24
+ });