@nx/devkit 17.3.0-beta.3 → 17.3.0-beta.4
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/devkit",
|
|
3
|
-
"version": "17.3.0-beta.
|
|
3
|
+
"version": "17.3.0-beta.4",
|
|
4
4
|
"private": false,
|
|
5
5
|
"description": "The Nx Devkit is used to customize Nx for different technologies and use cases. It contains many utility functions for reading and writing files, updating configuration, working with Abstract Syntax Trees(ASTs), and more. Learn more about [extending Nx by leveraging the Nx Devkit](https://nx.dev/extending-nx/intro/getting-started) on our docs.",
|
|
6
6
|
"repository": {
|
|
@@ -34,7 +34,7 @@
|
|
|
34
34
|
"tmp": "~0.2.1",
|
|
35
35
|
"tslib": "^2.3.0",
|
|
36
36
|
"semver": "7.5.3",
|
|
37
|
-
"@nrwl/devkit": "17.3.0-beta.
|
|
37
|
+
"@nrwl/devkit": "17.3.0-beta.4"
|
|
38
38
|
},
|
|
39
39
|
"peerDependencies": {
|
|
40
40
|
"nx": ">= 16 <= 18"
|
|
@@ -13,9 +13,10 @@ import type { GeneratorCallback } from 'nx/src/config/misc-interfaces';
|
|
|
13
13
|
* @param dependencies Dependencies to be added to the dependencies section of package.json
|
|
14
14
|
* @param devDependencies Dependencies to be added to the devDependencies section of package.json
|
|
15
15
|
* @param packageJsonPath Path to package.json
|
|
16
|
+
* @param keepExistingVersions If true, prevents existing dependencies from being bumped to newer versions
|
|
16
17
|
* @returns Callback to install dependencies only if necessary, no-op otherwise
|
|
17
18
|
*/
|
|
18
|
-
export declare function addDependenciesToPackageJson(tree: Tree, dependencies: Record<string, string>, devDependencies: Record<string, string>, packageJsonPath?: string): GeneratorCallback;
|
|
19
|
+
export declare function addDependenciesToPackageJson(tree: Tree, dependencies: Record<string, string>, devDependencies: Record<string, string>, packageJsonPath?: string, keepExistingVersions?: boolean): GeneratorCallback;
|
|
19
20
|
/**
|
|
20
21
|
* Remove Dependencies and Dev Dependencies from package.json
|
|
21
22
|
*
|
|
@@ -86,9 +86,10 @@ function updateExistingDependenciesVersion(dependencies, existingDependencies =
|
|
|
86
86
|
* @param dependencies Dependencies to be added to the dependencies section of package.json
|
|
87
87
|
* @param devDependencies Dependencies to be added to the devDependencies section of package.json
|
|
88
88
|
* @param packageJsonPath Path to package.json
|
|
89
|
+
* @param keepExistingVersions If true, prevents existing dependencies from being bumped to newer versions
|
|
89
90
|
* @returns Callback to install dependencies only if necessary, no-op otherwise
|
|
90
91
|
*/
|
|
91
|
-
function addDependenciesToPackageJson(tree, dependencies, devDependencies, packageJsonPath = 'package.json') {
|
|
92
|
+
function addDependenciesToPackageJson(tree, dependencies, devDependencies, packageJsonPath = 'package.json', keepExistingVersions) {
|
|
92
93
|
const currentPackageJson = readJson(tree, packageJsonPath);
|
|
93
94
|
/** Dependencies to install that are not met in dev dependencies */
|
|
94
95
|
let filteredDependencies = filterExistingDependencies(dependencies, currentPackageJson.devDependencies);
|
|
@@ -96,6 +97,7 @@ function addDependenciesToPackageJson(tree, dependencies, devDependencies, packa
|
|
|
96
97
|
let filteredDevDependencies = filterExistingDependencies(devDependencies, currentPackageJson.dependencies);
|
|
97
98
|
// filtered dependencies should consist of:
|
|
98
99
|
// - dependencies of the same type that are not present
|
|
100
|
+
// by default, filtered dependencies also include these (unless keepExistingVersions is true):
|
|
99
101
|
// - dependencies of the same type that have greater version
|
|
100
102
|
// - specified dependencies of the other type that have greater version and are already installed as current type
|
|
101
103
|
filteredDependencies = {
|
|
@@ -106,8 +108,14 @@ function addDependenciesToPackageJson(tree, dependencies, devDependencies, packa
|
|
|
106
108
|
...updateExistingDependenciesVersion(filteredDevDependencies, currentPackageJson.devDependencies),
|
|
107
109
|
...updateExistingAltDependenciesVersion(dependencies, currentPackageJson.devDependencies),
|
|
108
110
|
};
|
|
109
|
-
|
|
110
|
-
|
|
111
|
+
if (keepExistingVersions) {
|
|
112
|
+
filteredDependencies = removeExistingDependencies(filteredDependencies, currentPackageJson.dependencies);
|
|
113
|
+
filteredDevDependencies = removeExistingDependencies(filteredDevDependencies, currentPackageJson.devDependencies);
|
|
114
|
+
}
|
|
115
|
+
else {
|
|
116
|
+
filteredDependencies = removeLowerVersions(filteredDependencies, currentPackageJson.dependencies);
|
|
117
|
+
filteredDevDependencies = removeLowerVersions(filteredDevDependencies, currentPackageJson.devDependencies);
|
|
118
|
+
}
|
|
111
119
|
if (requiresAddingOfPackages(currentPackageJson, filteredDependencies, filteredDevDependencies)) {
|
|
112
120
|
updateJson(tree, packageJsonPath, (json) => {
|
|
113
121
|
json.dependencies = {
|
|
@@ -134,11 +142,19 @@ exports.addDependenciesToPackageJson = addDependenciesToPackageJson;
|
|
|
134
142
|
**/
|
|
135
143
|
function removeLowerVersions(incomingDeps, existingDeps) {
|
|
136
144
|
return Object.keys(incomingDeps).reduce((acc, d) => {
|
|
137
|
-
if (existingDeps?.[d]
|
|
138
|
-
|
|
139
|
-
|
|
145
|
+
if (!existingDeps?.[d] ||
|
|
146
|
+
isIncomingVersionGreater(incomingDeps[d], existingDeps[d])) {
|
|
147
|
+
acc[d] = incomingDeps[d];
|
|
148
|
+
}
|
|
149
|
+
return acc;
|
|
150
|
+
}, {});
|
|
151
|
+
}
|
|
152
|
+
function removeExistingDependencies(incomingDeps, existingDeps) {
|
|
153
|
+
return Object.keys(incomingDeps).reduce((acc, d) => {
|
|
154
|
+
if (!existingDeps?.[d]) {
|
|
155
|
+
acc[d] = incomingDeps[d];
|
|
140
156
|
}
|
|
141
|
-
return
|
|
157
|
+
return acc;
|
|
142
158
|
}, {});
|
|
143
159
|
}
|
|
144
160
|
/**
|