@jsenv/monorepo 0.1.10 → 0.2.1
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": "@jsenv/monorepo",
|
|
3
|
-
"version": "0.1
|
|
3
|
+
"version": "0.2.1",
|
|
4
4
|
"description": "Helpers to manage packages in a monorepo",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"repository": {
|
|
@@ -26,9 +26,9 @@
|
|
|
26
26
|
"/src/"
|
|
27
27
|
],
|
|
28
28
|
"dependencies": {
|
|
29
|
-
"@jsenv/urls": "2.5.
|
|
30
|
-
"@jsenv/filesystem": "4.10.
|
|
31
|
-
"@jsenv/package-publish": "1.11.
|
|
29
|
+
"@jsenv/urls": "2.5.3",
|
|
30
|
+
"@jsenv/filesystem": "4.10.12",
|
|
31
|
+
"@jsenv/package-publish": "1.11.10",
|
|
32
32
|
"@jsenv/humanize": "1.2.8",
|
|
33
33
|
"semver": "7.6.3"
|
|
34
34
|
}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
export const shouldUpdateVersion = (version) => {
|
|
2
|
+
if (!version) {
|
|
3
|
+
return false;
|
|
4
|
+
}
|
|
5
|
+
if (
|
|
6
|
+
version.startsWith("./") ||
|
|
7
|
+
version.startsWith("../") ||
|
|
8
|
+
version.startsWith("file:")
|
|
9
|
+
) {
|
|
10
|
+
return false;
|
|
11
|
+
}
|
|
12
|
+
if (version.startsWith("workspace:")) {
|
|
13
|
+
return false;
|
|
14
|
+
}
|
|
15
|
+
// "*" means package accept anything
|
|
16
|
+
// so there is no need to update it, it's always matching the latest version
|
|
17
|
+
if (version === "*") {
|
|
18
|
+
return false;
|
|
19
|
+
}
|
|
20
|
+
return true;
|
|
21
|
+
};
|
|
@@ -10,8 +10,10 @@ import {
|
|
|
10
10
|
} from "./internal/dependency_graph.js";
|
|
11
11
|
import { fetchWorkspaceLatests } from "./internal/fetch_workspace_latests.js";
|
|
12
12
|
import { increaseVersion } from "./internal/increase_version.js";
|
|
13
|
+
import { shouldUpdateVersion } from "./internal/should_update_version.js";
|
|
13
14
|
|
|
14
15
|
export const syncPackagesVersions = async ({
|
|
16
|
+
logs = true,
|
|
15
17
|
directoryUrl,
|
|
16
18
|
packagesRelations = {},
|
|
17
19
|
}) => {
|
|
@@ -88,13 +90,7 @@ Use a tool like "git diff" to see the new versions and ensure this is what you w
|
|
|
88
90
|
const packageDeps =
|
|
89
91
|
workspacePackages[packageName].packageObject[dependencyType];
|
|
90
92
|
const version = packageDeps[dependencyName];
|
|
91
|
-
|
|
92
|
-
if (
|
|
93
|
-
version.startsWith("./") ||
|
|
94
|
-
version.startsWith("../") ||
|
|
95
|
-
version.startsWith("file:") ||
|
|
96
|
-
version.startsWith("workspace:")
|
|
97
|
-
) {
|
|
93
|
+
if (!shouldUpdateVersion(version)) {
|
|
98
94
|
return;
|
|
99
95
|
}
|
|
100
96
|
dependencyUpdates.push({
|
|
@@ -210,13 +206,17 @@ Use a tool like "git diff" to see the new versions and ensure this is what you w
|
|
|
210
206
|
workspacePackage.updateFile(workspacePackage.packageObject);
|
|
211
207
|
});
|
|
212
208
|
const updateCount = versionUpdates.length + dependencyUpdates.length;
|
|
213
|
-
if (
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
209
|
+
if (logs) {
|
|
210
|
+
if (updateCount === 0) {
|
|
211
|
+
console.log(
|
|
212
|
+
`${UNICODE.OK} all versions in package.json files are in sync`,
|
|
213
|
+
);
|
|
214
|
+
} else {
|
|
215
|
+
console.log(
|
|
216
|
+
`${UNICODE.INFO} ${updateCount} versions modified in package.json files
|
|
218
217
|
Use a tool like "git diff" to review these changes`,
|
|
219
|
-
|
|
218
|
+
);
|
|
219
|
+
}
|
|
220
220
|
}
|
|
221
221
|
|
|
222
222
|
return {
|
|
@@ -16,8 +16,14 @@ import {
|
|
|
16
16
|
compareTwoPackageVersions,
|
|
17
17
|
VERSION_COMPARE_RESULTS,
|
|
18
18
|
} from "./internal/compare_two_package_versions.js";
|
|
19
|
+
import { increaseVersion } from "./internal/increase_version.js";
|
|
20
|
+
import { shouldUpdateVersion } from "./internal/should_update_version.js";
|
|
21
|
+
import { syncPackagesVersions } from "./sync_packages_versions.js";
|
|
19
22
|
|
|
20
|
-
export const upgradeExternalVersions = async ({
|
|
23
|
+
export const upgradeExternalVersions = async ({
|
|
24
|
+
directoryUrl,
|
|
25
|
+
packagesRelations = {},
|
|
26
|
+
}) => {
|
|
21
27
|
const internalPackages = await collectWorkspacePackages({ directoryUrl });
|
|
22
28
|
const internalPackageNames = Object.keys(internalPackages);
|
|
23
29
|
let externalPackages = {};
|
|
@@ -28,20 +34,7 @@ export const upgradeExternalVersions = async ({ directoryUrl }) => {
|
|
|
28
34
|
type,
|
|
29
35
|
version,
|
|
30
36
|
}) => {
|
|
31
|
-
|
|
32
|
-
if (
|
|
33
|
-
version.startsWith("./") ||
|
|
34
|
-
version.startsWith("../") ||
|
|
35
|
-
version.startsWith("file:")
|
|
36
|
-
) {
|
|
37
|
-
return;
|
|
38
|
-
}
|
|
39
|
-
// "*" means package accept anything
|
|
40
|
-
// so there is no need to update it, it's always matching the latest version
|
|
41
|
-
if (version === "*") {
|
|
42
|
-
return;
|
|
43
|
-
}
|
|
44
|
-
if (version.startsWith("workspace:")) {
|
|
37
|
+
if (!shouldUpdateVersion(version)) {
|
|
45
38
|
return;
|
|
46
39
|
}
|
|
47
40
|
const existing = externalPackages[name];
|
|
@@ -123,14 +116,15 @@ export const upgradeExternalVersions = async ({ directoryUrl }) => {
|
|
|
123
116
|
|
|
124
117
|
const packageFilesToUpdate = {};
|
|
125
118
|
const updates = [];
|
|
119
|
+
let someInternalUpdate = false;
|
|
126
120
|
for (const externalPackageName of externalPackageNames) {
|
|
127
121
|
const externalPackageRefs = externalPackages[externalPackageName];
|
|
128
122
|
for (const externalPackageRef of externalPackageRefs) {
|
|
129
123
|
const internalPackageName = externalPackageRef.internalPackageName;
|
|
124
|
+
const internalPackageObject =
|
|
125
|
+
internalPackages[internalPackageName].packageObject;
|
|
130
126
|
const internalPackageDeps =
|
|
131
|
-
|
|
132
|
-
externalPackageRef.type
|
|
133
|
-
];
|
|
127
|
+
internalPackageObject[externalPackageRef.type];
|
|
134
128
|
const versionDeclared = internalPackageDeps[externalPackageName];
|
|
135
129
|
const registryLatestVersion = latestVersions[externalPackageName];
|
|
136
130
|
if (registryLatestVersion === null) {
|
|
@@ -153,6 +147,15 @@ export const upgradeExternalVersions = async ({ directoryUrl }) => {
|
|
|
153
147
|
from: versionDeclared,
|
|
154
148
|
to: registryLatestVersion,
|
|
155
149
|
});
|
|
150
|
+
if (
|
|
151
|
+
externalPackageRef.type === "dependencies" &&
|
|
152
|
+
shouldUpdateVersion(internalPackageObject.version)
|
|
153
|
+
) {
|
|
154
|
+
someInternalUpdate = true;
|
|
155
|
+
internalPackageObject.version = increaseVersion(
|
|
156
|
+
internalPackageObject.version,
|
|
157
|
+
);
|
|
158
|
+
}
|
|
156
159
|
internalPackageDeps[externalPackageName] = registryLatestVersion;
|
|
157
160
|
packageFilesToUpdate[internalPackageName] = true;
|
|
158
161
|
}
|
|
@@ -172,5 +175,13 @@ export const upgradeExternalVersions = async ({ directoryUrl }) => {
|
|
|
172
175
|
Use a tool like "git diff" to review these changes then run "npm install"`,
|
|
173
176
|
);
|
|
174
177
|
}
|
|
178
|
+
|
|
179
|
+
if (someInternalUpdate) {
|
|
180
|
+
await syncPackagesVersions({
|
|
181
|
+
logs: false,
|
|
182
|
+
directoryUrl,
|
|
183
|
+
packagesRelations,
|
|
184
|
+
});
|
|
185
|
+
}
|
|
175
186
|
return updates;
|
|
176
187
|
};
|