pob 38.1.0 → 38.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/lib/generators/app/PobAppGenerator.js +10 -0
- package/lib/generators/common/testing/CommonTestingGenerator.js +2 -3
- package/lib/generators/core/ci/templates/github-action-documentation-workflow.yml.ejs +0 -12
- package/lib/generators/core/ci/templates/github-action-push-workflow.yml.ejs +2 -2
- package/lib/generators/core/package/CorePackageGenerator.js +21 -13
- package/lib/generators/monorepo/PobMonorepoGenerator.js +14 -1
- package/lib/utils/packageManagerWorkspacesUtils.js +20 -0
- package/package.json +7 -7
|
@@ -414,6 +414,16 @@ export default class PobAppGenerator extends Generator {
|
|
|
414
414
|
}
|
|
415
415
|
}
|
|
416
416
|
|
|
417
|
+
if (this.appConfig.type === "expo") {
|
|
418
|
+
pkg.expo = { install: { exclude: ["typescript"] } };
|
|
419
|
+
} else if (pkg.expo) {
|
|
420
|
+
delete pkg.expo;
|
|
421
|
+
}
|
|
422
|
+
|
|
423
|
+
packageUtils.addOrRemoveScripts(pkg, this.appConfig.type === "expo", {
|
|
424
|
+
"upgrade-expo": "expo install expo@57 --fix",
|
|
425
|
+
});
|
|
426
|
+
|
|
417
427
|
this.fs.writeJSON(this.destinationPath("package.json"), pkg);
|
|
418
428
|
|
|
419
429
|
this.composeWith("pob:core:sort-package");
|
|
@@ -264,8 +264,7 @@ export default class CommonTestingGenerator extends Generator {
|
|
|
264
264
|
if (!workspacesPattern && this.options.monorepo) {
|
|
265
265
|
throw new Error("Invalid workspacesPattern");
|
|
266
266
|
}
|
|
267
|
-
const experimentalTestCoverage =
|
|
268
|
-
pkg.name === "check-package-dependencies";
|
|
267
|
+
const experimentalTestCoverage = true;
|
|
269
268
|
return [
|
|
270
269
|
experimentalTestCoverage && coverage === "generate"
|
|
271
270
|
? "mkdir -p docs && "
|
|
@@ -274,7 +273,7 @@ export default class CommonTestingGenerator extends Generator {
|
|
|
274
273
|
coverage && !experimentalTestCoverage
|
|
275
274
|
? `npx c8${
|
|
276
275
|
coverage === "generate"
|
|
277
|
-
? ` --reporter=${coverage === "generate" ? "
|
|
276
|
+
? ` --reporter=${coverage === "generate" ? "lcov" : "lcov"}`
|
|
278
277
|
: ""
|
|
279
278
|
} --all --src ./${this.options.srcDirectory} `
|
|
280
279
|
: ""
|
|
@@ -54,18 +54,6 @@ jobs:
|
|
|
54
54
|
run: <%= packageManager %> typedoc --tsconfig tsconfig.doc.json
|
|
55
55
|
<% } -%>
|
|
56
56
|
|
|
57
|
-
<% if (testing) { -%>
|
|
58
|
-
<% if (testRunner === 'node') { -%>
|
|
59
|
-
|
|
60
|
-
- name: Generate Coverage
|
|
61
|
-
run: NODE_V8_COVERAGE=./docs/coverage <%= packageManagerRun("test:coverage:generate") %>
|
|
62
|
-
<% } else {-%>
|
|
63
|
-
|
|
64
|
-
- name: Generate Coverage
|
|
65
|
-
run: <%= packageManagerRun("test:coverage:generate") %>
|
|
66
|
-
<% } -%>
|
|
67
|
-
<% } -%>
|
|
68
|
-
|
|
69
57
|
- name: Create nojekyll
|
|
70
58
|
run: touch docs/.nojekyll
|
|
71
59
|
|
|
@@ -89,7 +89,7 @@ jobs:
|
|
|
89
89
|
<% if (codecov) { -%>
|
|
90
90
|
|
|
91
91
|
- name: Generate Test Coverage
|
|
92
|
-
run: <%= packageManagerRun("test:coverage:generate) %>
|
|
92
|
+
run: <%= packageManagerRun("test:coverage:generate") %>
|
|
93
93
|
if: startsWith(matrix.node-version, '<%= nodeLatestMajorVersion %>.')
|
|
94
94
|
env:
|
|
95
95
|
CI: true
|
|
@@ -99,7 +99,7 @@ jobs:
|
|
|
99
99
|
with:
|
|
100
100
|
fail_ci_if_error: true
|
|
101
101
|
token: ${{ secrets.CODECOV_TOKEN }}
|
|
102
|
-
files: ./
|
|
102
|
+
files: ./docs/coverage.lcov
|
|
103
103
|
disable_search: true
|
|
104
104
|
if: startsWith(matrix.node-version, '<%= nodeLatestMajorVersion %>.') && github.actor != 'dependabot[bot]'
|
|
105
105
|
<% } else if (testing) { -%>
|
|
@@ -233,25 +233,33 @@ export default class CorePackageGenerator extends Generator {
|
|
|
233
233
|
|
|
234
234
|
if (this.options.inMonorepo && !this.options.isRoot) {
|
|
235
235
|
packageUtils.removeScripts(pkg, ["checks"]);
|
|
236
|
-
} else
|
|
237
|
-
const checksScript = pkg.scripts?.checks;
|
|
238
|
-
if (checksScript && checksScript.includes("node scripts/check-package")) {
|
|
239
|
-
pkg.scripts.checks = checksScript.replace(
|
|
240
|
-
/( && )?node scripts\/check-package\.(mjs|js)( && )?/,
|
|
241
|
-
"",
|
|
242
|
-
);
|
|
243
|
-
if (pkg.scripts.checks === "") {
|
|
244
|
-
delete pkg.scripts.checks;
|
|
245
|
-
}
|
|
246
|
-
}
|
|
247
|
-
} else if (inMonorepo && !inMonorepo.root) {
|
|
236
|
+
} else {
|
|
248
237
|
if (this.fs.exists("scripts/check-package.js")) {
|
|
249
238
|
this.fs.delete("scripts/check-package.js");
|
|
250
239
|
}
|
|
251
240
|
if (this.fs.exists("scripts/check-package.mjs")) {
|
|
252
241
|
this.fs.delete("scripts/check-package.mjs");
|
|
253
242
|
}
|
|
254
|
-
|
|
243
|
+
if (this.fs.exists("scripts/check-package.ts")) {
|
|
244
|
+
this.fs.delete("scripts/check-package.ts");
|
|
245
|
+
}
|
|
246
|
+
if (this.options.isRoot) {
|
|
247
|
+
const checksScript = pkg.scripts?.checks;
|
|
248
|
+
if (
|
|
249
|
+
checksScript &&
|
|
250
|
+
checksScript.includes("node scripts/check-package")
|
|
251
|
+
) {
|
|
252
|
+
pkg.scripts.checks = checksScript.replace(
|
|
253
|
+
/( && )?node scripts\/check-packages?\.(mjs|js|ts)( && )?/,
|
|
254
|
+
"",
|
|
255
|
+
);
|
|
256
|
+
if (pkg.scripts.checks === "") {
|
|
257
|
+
delete pkg.scripts.checks;
|
|
258
|
+
}
|
|
259
|
+
}
|
|
260
|
+
} else if (inMonorepo && !inMonorepo.root) {
|
|
261
|
+
packageUtils.removeScripts(pkg, ["checks"]);
|
|
262
|
+
}
|
|
255
263
|
}
|
|
256
264
|
|
|
257
265
|
if (!pkg.authors) {
|
|
@@ -4,7 +4,10 @@ import { platform } from "node:process";
|
|
|
4
4
|
import Generator from "yeoman-generator";
|
|
5
5
|
import * as packageUtils from "../../utils/package.js";
|
|
6
6
|
import { packageManagerRun } from "../../utils/packageManagerUtils.js";
|
|
7
|
-
import {
|
|
7
|
+
import {
|
|
8
|
+
workspacesRun,
|
|
9
|
+
workspacesRunSequential,
|
|
10
|
+
} from "../../utils/packageManagerWorkspacesUtils.js";
|
|
8
11
|
import {
|
|
9
12
|
buildDependenciesMaps,
|
|
10
13
|
buildTopologicalOrderBatches,
|
|
@@ -421,6 +424,16 @@ export default class PobMonorepoGenerator extends Generator {
|
|
|
421
424
|
watch: `${packageManagerRun(this.options.packageManager, "clean:build")} && rollup --config rollup.config.mjs --watch`,
|
|
422
425
|
});
|
|
423
426
|
|
|
427
|
+
const hasExpoApp = this.packageConfigs.some(
|
|
428
|
+
(config) => config?.app?.type === "expo",
|
|
429
|
+
);
|
|
430
|
+
packageUtils.addOrRemoveScripts(pkg, hasExpoApp, {
|
|
431
|
+
"upgrade-expo": workspacesRunSequential(
|
|
432
|
+
this.options.packageManager,
|
|
433
|
+
"upgrade-expo",
|
|
434
|
+
),
|
|
435
|
+
});
|
|
436
|
+
|
|
424
437
|
packageUtils.addOrRemoveDevDependencies(pkg, rollupKinds.has("esbuild"), [
|
|
425
438
|
"@pob/rollup-esbuild",
|
|
426
439
|
]);
|
|
@@ -38,6 +38,26 @@ export const workspacesRunTopological = (packageManager, script) => {
|
|
|
38
38
|
}
|
|
39
39
|
};
|
|
40
40
|
|
|
41
|
+
/**
|
|
42
|
+
* Run a script sequentially in every workspace that defines it.
|
|
43
|
+
* Use when parallel execution is unsafe (e.g. package manager upgrades).
|
|
44
|
+
*/
|
|
45
|
+
export const workspacesRunSequential = (packageManager, script) => {
|
|
46
|
+
switch (packageManager) {
|
|
47
|
+
case undefined:
|
|
48
|
+
case "yarn":
|
|
49
|
+
return `yarn workspaces foreach -Av run ${script}`;
|
|
50
|
+
case "pnpm":
|
|
51
|
+
return `pnpm -r --sequential run ${script}`;
|
|
52
|
+
case "npm":
|
|
53
|
+
return `npm run ${script} --workspaces --if-present`;
|
|
54
|
+
case "bun":
|
|
55
|
+
return `bun --filter '*' run ${script}`;
|
|
56
|
+
default:
|
|
57
|
+
throw new Error(`Unsupported package manager: ${packageManager}`);
|
|
58
|
+
}
|
|
59
|
+
};
|
|
60
|
+
|
|
41
61
|
/**
|
|
42
62
|
* Run a script in all workspaces in parallel, excluding packages matching the given patterns.
|
|
43
63
|
* Use for watch commands where example/demo packages should be skipped.
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "pob",
|
|
3
|
-
"version": "38.1
|
|
3
|
+
"version": "38.2.1",
|
|
4
4
|
"description": "Pile of bones, library generator with git/babel/typescript/typedoc/readme/vitest",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"skeleton"
|
|
@@ -48,17 +48,17 @@
|
|
|
48
48
|
"validate-npm-package-name": "^8.0.0",
|
|
49
49
|
"yeoman-environment": "6.1.0",
|
|
50
50
|
"yeoman-generator": "8.2.2",
|
|
51
|
-
"@pob/eslint-config": "67.1.
|
|
52
|
-
"@pob/eslint-config-typescript-react": "67.1.
|
|
53
|
-
"@pob/sort-
|
|
54
|
-
"pob-dependencies": "27.1.
|
|
55
|
-
"@pob/sort-
|
|
51
|
+
"@pob/eslint-config": "67.1.1",
|
|
52
|
+
"@pob/eslint-config-typescript-react": "67.1.1",
|
|
53
|
+
"@pob/sort-pkg": "13.1.2",
|
|
54
|
+
"pob-dependencies": "27.1.1",
|
|
55
|
+
"@pob/sort-object": "11.1.1"
|
|
56
56
|
},
|
|
57
57
|
"devDependencies": {
|
|
58
58
|
"@types/node": "24.13.3",
|
|
59
59
|
"@typescript/native": "npm:typescript@7.0.2",
|
|
60
60
|
"@yeoman/types": "1.11.1",
|
|
61
|
-
"@pob/root": "27.1
|
|
61
|
+
"@pob/root": "27.2.1"
|
|
62
62
|
},
|
|
63
63
|
"engines": {
|
|
64
64
|
"node": ">=22.18.0"
|