node-dep-resolver 1.1.1 → 1.1.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/README.md +4 -5
- package/bin/cli.js +29 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -15,13 +15,12 @@
|
|
|
15
15
|
- **Semver Conflict Detection**: Identifies overlapping or incompatible version constraints requested across different packages.
|
|
16
16
|
- **Backtracking Resolution Engine**: Evaluates alternative candidate package versions to automatically resolve conflicts.
|
|
17
17
|
- **CLI & Programmatic Library**: Use instantly via `npx node-dep-resolver` or import into Node.js ES Module projects.
|
|
18
|
-
- **Native Unit Testing**: High-reliability codebase verified using Node.js native `node:test` framework.
|
|
19
18
|
|
|
20
19
|
---
|
|
21
20
|
|
|
22
21
|
## Installation & CLI Usage
|
|
23
22
|
|
|
24
|
-
You can run the CLI directly on any `package.json` file
|
|
23
|
+
You can run the CLI directly on any `package.json` file:
|
|
25
24
|
|
|
26
25
|
```bash
|
|
27
26
|
npx node-dep-resolver ./package.json
|
|
@@ -57,9 +56,9 @@ Starting resolution...
|
|
|
57
56
|
|
|
58
57
|
========== RESOLVED DEPENDENCY SOLUTION ==========
|
|
59
58
|
|
|
60
|
-
[OK] express
|
|
61
|
-
[OK] express-rate-limit
|
|
62
|
-
[
|
|
59
|
+
[OK] express: 4.18.2 (satisfies requested range '4.18.2')
|
|
60
|
+
[OK] express-rate-limit: 7.5.0 (satisfies requested range '7.5.0')
|
|
61
|
+
[UPGRADE] axios: 1.7.0 -> 1.20.0 (satisfies requested range '^1.7.0')
|
|
63
62
|
```
|
|
64
63
|
|
|
65
64
|
---
|
package/bin/cli.js
CHANGED
|
@@ -2,9 +2,36 @@
|
|
|
2
2
|
|
|
3
3
|
import fs from "fs";
|
|
4
4
|
import path from "path";
|
|
5
|
+
import semver from "semver";
|
|
5
6
|
import Graph from "../src/base/graph/GraphClass.js";
|
|
6
7
|
import Resolver from "../src/base/resolver/ResolverClass.js";
|
|
7
8
|
|
|
9
|
+
function formatSolutionLine(name, packageData, requestedRange) {
|
|
10
|
+
if (requestedRange) {
|
|
11
|
+
const minVerObj = semver.minVersion(requestedRange);
|
|
12
|
+
const minVer = minVerObj ? minVerObj.version : requestedRange;
|
|
13
|
+
|
|
14
|
+
if (semver.valid(packageData.version) && semver.valid(minVer)) {
|
|
15
|
+
if (semver.gt(packageData.version, minVer)) {
|
|
16
|
+
return ` [UPGRADE] ${name}: ${minVer} -> ${packageData.version} (satisfies requested range '${requestedRange}')`;
|
|
17
|
+
} else if (semver.lt(packageData.version, minVer)) {
|
|
18
|
+
return ` [DOWNGRADE] ${name}: ${minVer} -> ${packageData.version} (satisfies requested range '${requestedRange}')`;
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
return ` [OK] ${name}: ${packageData.version} (satisfies requested range '${requestedRange}')`;
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
if (packageData.oldVersion && semver.valid(packageData.version) && semver.valid(packageData.oldVersion)) {
|
|
25
|
+
if (semver.gt(packageData.version, packageData.oldVersion)) {
|
|
26
|
+
return ` [UPGRADE] ${name}: ${packageData.oldVersion} -> ${packageData.version} (to resolve conflict)`;
|
|
27
|
+
} else if (semver.lt(packageData.version, packageData.oldVersion)) {
|
|
28
|
+
return ` [DOWNGRADE] ${name}: ${packageData.oldVersion} -> ${packageData.version} (to resolve conflict)`;
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
return ` [OK] ${name}: ${packageData.version} (requested by ${packageData.requestedBy || 'ROOT'})`;
|
|
33
|
+
}
|
|
34
|
+
|
|
8
35
|
async function runCli() {
|
|
9
36
|
const targetPath = process.argv[2] || "./package.json";
|
|
10
37
|
const absolutePath = path.resolve(process.cwd(), targetPath);
|
|
@@ -44,7 +71,8 @@ async function runCli() {
|
|
|
44
71
|
|
|
45
72
|
console.log("\n========== RESOLVED DEPENDENCY SOLUTION ==========\n");
|
|
46
73
|
for (const [name, packageData] of solution) {
|
|
47
|
-
|
|
74
|
+
const requestedRange = dependencies[name];
|
|
75
|
+
console.log(formatSolutionLine(name, packageData, requestedRange));
|
|
48
76
|
}
|
|
49
77
|
console.log();
|
|
50
78
|
}
|