pob 24.2.0 → 24.3.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/CHANGELOG.md CHANGED
@@ -3,6 +3,34 @@
3
3
  All notable changes to this project will be documented in this file.
4
4
  See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
5
5
 
6
+ ## [24.3.1](https://github.com/christophehurpeau/pob/compare/pob@24.3.0...pob@24.3.1) (2024-12-03)
7
+
8
+ Version bump for dependency: yarn-workspace-utils
9
+ Version bump for dependency: @pob/root
10
+
11
+
12
+ ## [24.3.0](https://github.com/christophehurpeau/pob/compare/pob@24.2.0...pob@24.3.0) (2024-12-01)
13
+
14
+ ### Features
15
+
16
+ * allow lib to use latest lts ([2c7d51f](https://github.com/christophehurpeau/pob/commit/2c7d51f4bab9e64af469afc1c2b59b74c7c7a8fa))
17
+ * bundler tsc using experimental-strip-types ([98002f8](https://github.com/christophehurpeau/pob/commit/98002f832c1869e23c5c93c3f5e61b4915e1263b))
18
+ * **deps:** update dependency prettier to v3.4.0 ([#2325](https://github.com/christophehurpeau/pob/issues/2325)) ([367f1dc](https://github.com/christophehurpeau/pob/commit/367f1dcebf3b47b61c024380b6358894dcb6514a))
19
+
20
+ ### Bug Fixes
21
+
22
+ * **deps:** update dependency prettier to v3.4.1 ([#2328](https://github.com/christophehurpeau/pob/issues/2328)) ([cf236ba](https://github.com/christophehurpeau/pob/commit/cf236bac297964115e0b7bb463f923ea78c51ca8))
23
+ * **deps:** update yarn monorepo ([#2314](https://github.com/christophehurpeau/pob/issues/2314)) ([a175402](https://github.com/christophehurpeau/pob/commit/a17540280c524ceeed748625c94b7b4c717e0ba2))
24
+ * **deps:** update yarn monorepo ([#2322](https://github.com/christophehurpeau/pob/issues/2322)) ([ec71e81](https://github.com/christophehurpeau/pob/commit/ec71e8101df4a3bace9ec3c02874165af7580df6))
25
+
26
+ ### Reverts
27
+
28
+ * Revert "refactor: properly import generators" ([e1e2d46](https://github.com/christophehurpeau/pob/commit/e1e2d468729e3cae03637e8f7169c65e3ba85d4b))
29
+
30
+ Version bump for dependency: yarn-workspace-utils
31
+ Version bump for dependency: @pob/root
32
+
33
+
6
34
  ## [24.2.0](https://github.com/christophehurpeau/pob/compare/pob@24.1.0...pob@24.2.0) (2024-11-17)
7
35
 
8
36
  ### Bug Fixes
@@ -178,6 +178,7 @@ export default class CommonTestingGenerator extends Generator {
178
178
  : packageUtils.transpileWithBabel(pkg);
179
179
  const withTypescript =
180
180
  transpileWithBabel ||
181
+ pkg.pob?.bundler === "tsc" ||
181
182
  (pkg.pob?.typescript && pkg.pob.typescript !== "check-only");
182
183
  let hasReact =
183
184
  withTypescript &&
@@ -194,6 +195,7 @@ export default class CommonTestingGenerator extends Generator {
194
195
  if (testRunner === "vitest") return undefined;
195
196
  if (!withTypescript) return undefined;
196
197
  if (this.options.swc || isJestRunner) return "swc";
198
+ if (this.options.onlyLatestLTS) return "node";
197
199
  return "ts-node";
198
200
  })();
199
201
 
@@ -270,6 +272,8 @@ export default class CommonTestingGenerator extends Generator {
270
272
 
271
273
  const tsTestLoaderOption = (() => {
272
274
  switch (tsTestUtil) {
275
+ case "node":
276
+ return "--disable-warning=ExperimentalWarning --experimental-strip-types";
273
277
  case "ts-node":
274
278
  return "--loader=ts-node/esm --experimental-specifier-resolution=node";
275
279
  case "swc":
@@ -121,7 +121,11 @@ export default class CommonTranspilerGenerator extends Generator {
121
121
  this.entries = pkg.pob.entries;
122
122
  this.babelEnvs = pkg.pob.babelEnvs || [];
123
123
 
124
- if (this.babelEnvs.length > 0 || pkg.pob.typescript === true) {
124
+ if (
125
+ this.babelEnvs.length > 0 ||
126
+ pkg.pob.typescript === true ||
127
+ pkg.pob.bundler
128
+ ) {
125
129
  fs.mkdirSync(this.destinationPath("src"), { recursive: true });
126
130
  } else {
127
131
  // recursive does not throw if directory already exists
@@ -137,6 +141,7 @@ export default class CommonTranspilerGenerator extends Generator {
137
141
  const bundler =
138
142
  withTypescript &&
139
143
  (pkg.pob.rollup === false ||
144
+ pkg.pob.bundler === "tsc" ||
140
145
  (!pkg.pob.bundler && !pkg.pob.typescript === true)
141
146
  ? "tsc"
142
147
  : (pkg.pob.bundler ??
@@ -150,7 +155,8 @@ export default class CommonTranspilerGenerator extends Generator {
150
155
  if (bundler === "rollup-esbuild") return "pob-esbuild-clean-out";
151
156
  if (bundler === "rollup-babel") return "pob-babel-clean-out";
152
157
  if (bundler === "esbuild") return "pob-esbuild-clean-out";
153
- return null;
158
+ if (bundler === "tsc") return "rm -Rf";
159
+ if (bundler) throw new Error(`Invalid bundler: ${bundler}`);
154
160
  })();
155
161
 
156
162
  /* scripts */
@@ -346,7 +352,7 @@ export default class CommonTranspilerGenerator extends Generator {
346
352
 
347
353
  /* webpack 5 and node with ESM support */
348
354
  if (bundler || withTypescript) {
349
- const omitTarget = bundler === "esbuild";
355
+ const omitTarget = bundler === "esbuild" || bundler === "tsc";
350
356
  pkg.exports = {
351
357
  "./package.json": "./package.json",
352
358
  };
@@ -365,9 +371,7 @@ export default class CommonTranspilerGenerator extends Generator {
365
371
  types:
366
372
  pkg.private || this.options.isAppLibrary
367
373
  ? `./src/${entryDistName}.ts`
368
- : `./${this.options.buildDirectory}/${
369
- bundler !== "tsc" ? "definitions/" : ""
370
- }${entryDistName}.d.ts`,
374
+ : `./${this.options.buildDirectory}/definitions/${entryDistName}.d.ts`,
371
375
  };
372
376
 
373
377
  const defaultNodeEnv =
@@ -377,66 +381,78 @@ export default class CommonTranspilerGenerator extends Generator {
377
381
 
378
382
  const defaultNodeEnvVersion = defaultNodeEnv && defaultNodeEnv.version;
379
383
 
380
- envs.forEach(({ target, version, formats, omitVersionInFileName }) => {
381
- if (target === "node" && entry === "browser") return;
382
-
383
- const exportTarget = {};
384
-
385
- if (target === "node") {
386
- const cjsExt = pkg.type === "module" ? "cjs" : "cjs.js";
387
- const filenameWithoutExt = `${entryDistName}${
388
- omitTarget
389
- ? ""
390
- : `-${target}${omitVersionInFileName ? "" : version}`
391
- }`;
392
- if (!formats || formats.includes("es")) {
393
- exportTarget.import = `./${this.options.buildDirectory}/${filenameWithoutExt}.mjs`;
384
+ envs.forEach(
385
+ ({
386
+ target,
387
+ version,
388
+ formats,
389
+ omitVersionInFileName = bundler === "tsc",
390
+ }) => {
391
+ if (target === "node" && entry === "browser") return;
392
+
393
+ const exportTarget = {};
394
+
395
+ if (target === "node") {
396
+ const cjsExt = pkg.type === "module" ? "cjs" : "cjs.js";
397
+ const filenameWithoutExt = `${entryDistName}${
398
+ omitTarget
399
+ ? ""
400
+ : `-${target}${omitVersionInFileName ? "" : version}`
401
+ }`;
402
+ if (bundler === "tsc") {
403
+ if (formats) {
404
+ throw new Error("tsc does not support formats");
405
+ }
406
+ exportTarget.import = `./${this.options.buildDirectory}/${filenameWithoutExt}.js`;
407
+ } else if (!formats || formats.includes("es")) {
408
+ exportTarget.import = `./${this.options.buildDirectory}/${filenameWithoutExt}.mjs`;
409
+
410
+ if (formats && formats.includes("cjs")) {
411
+ exportTarget.require = `./${this.options.buildDirectory}/${filenameWithoutExt}.${cjsExt}`;
412
+ }
413
+ } else if (formats && formats.includes("cjs")) {
414
+ exportTarget.default = `./${this.options.buildDirectory}/${filenameWithoutExt}.${cjsExt}`;
415
+ }
416
+ // eslint: https://github.com/benmosher/eslint-plugin-import/issues/2132
417
+ // jest: https://github.com/facebook/jest/issues/9771
418
+ if (!pkg.main && exportName === ".") {
419
+ pkg.main =
420
+ pkg.type === "module"
421
+ ? exportTarget.import
422
+ : exportTarget.default ||
423
+ exportTarget.require ||
424
+ exportTarget.import;
425
+ }
426
+ } else if (target === "browser") {
427
+ if (!formats || formats.includes("es")) {
428
+ exportTarget.import = `./${
429
+ this.options.buildDirectory
430
+ }/${entryDistName}-${target}${version || ""}.es.js`;
431
+ }
394
432
 
395
433
  if (formats && formats.includes("cjs")) {
396
- exportTarget.require = `./${this.options.buildDirectory}/${filenameWithoutExt}.${cjsExt}`;
434
+ exportTarget.require = `./${
435
+ this.options.buildDirectory
436
+ }/index-${target}${version || ""}.cjs.js`;
397
437
  }
398
- } else if (formats && formats.includes("cjs")) {
399
- exportTarget.default = `./${this.options.buildDirectory}/${filenameWithoutExt}.${cjsExt}`;
400
- }
401
- // eslint: https://github.com/benmosher/eslint-plugin-import/issues/2132
402
- // jest: https://github.com/facebook/jest/issues/9771
403
- if (!pkg.main && exportName === ".") {
404
- pkg.main =
405
- pkg.type === "module"
406
- ? exportTarget.import
407
- : exportTarget.default ||
408
- exportTarget.require ||
409
- exportTarget.import;
410
- }
411
- } else if (target === "browser") {
412
- if (!formats || formats.includes("es")) {
413
- exportTarget.import = `./${
414
- this.options.buildDirectory
415
- }/${entryDistName}-${target}${version || ""}.es.js`;
416
438
  }
417
439
 
418
- if (formats && formats.includes("cjs")) {
419
- exportTarget.require = `./${
420
- this.options.buildDirectory
421
- }/index-${target}${version || ""}.cjs.js`;
440
+ if (
441
+ !version ||
442
+ (target === "node" && version === defaultNodeEnvVersion)
443
+ ) {
444
+ targets[target] = {
445
+ ...targets[target],
446
+ ...exportTarget,
447
+ };
448
+ } else {
449
+ targets[target] = {
450
+ [`${target}:${version}`]: exportTarget,
451
+ ...targets[target],
452
+ };
422
453
  }
423
- }
424
-
425
- if (
426
- !version ||
427
- (target === "node" && version === defaultNodeEnvVersion)
428
- ) {
429
- targets[target] = {
430
- ...targets[target],
431
- ...exportTarget,
432
- };
433
- } else {
434
- targets[target] = {
435
- [`${target}:${version}`]: exportTarget,
436
- ...targets[target],
437
- };
438
- }
439
- });
454
+ },
455
+ );
440
456
 
441
457
  pkg.exports[exportName] = targets;
442
458
  });
@@ -656,7 +672,12 @@ export default class CommonTranspilerGenerator extends Generator {
656
672
  },
657
673
  );
658
674
  }
659
- } else if (!envs || envs.length === 0 || pkg.pob?.bundler === "esbuild") {
675
+ } else if (
676
+ !envs ||
677
+ envs.length === 0 ||
678
+ pkg.pob?.bundler === "esbuild" ||
679
+ pkg.pob?.bundler === "tsc"
680
+ ) {
660
681
  this.fs.delete("rollup.config.mjs");
661
682
  }
662
683
 
@@ -149,7 +149,11 @@ export default class CommonTypescriptGenerator extends Generator {
149
149
  version: `${maintenanceLTS}`,
150
150
  },
151
151
  ];
152
- if (pkg.pob.rollup === false || pkg.pob.bundler === false) {
152
+ if (
153
+ pkg.pob.rollup === false ||
154
+ pkg.pob.bundler === false ||
155
+ pkg.pob.bundler === "tsc"
156
+ ) {
153
157
  return [`@pob/root/tsconfigs/targets/node-${nodeVersion}.json`];
154
158
  }
155
159
  if (envs && envs.every((env) => env.target === "node")) {
@@ -278,7 +282,10 @@ export default class CommonTypescriptGenerator extends Generator {
278
282
  tsconfigPath,
279
283
  {
280
284
  emitDefinitions: this.options.builddefs,
281
- build: pkg.pob?.rollup === false || pkg.pob?.bundler === false,
285
+ build:
286
+ pkg.pob?.rollup === false ||
287
+ pkg.pob?.bundler === false ||
288
+ pkg.pob?.bundler === "tsc",
282
289
  cacheEnabled: !this.options.isApp || this.options.isAppLibrary,
283
290
  monorepoPackageSrcPaths,
284
291
  monorepoPackageReferences,
@@ -1,6 +1,7 @@
1
1
  import { rmSync } from "node:fs";
2
2
  import Generator from "yeoman-generator";
3
3
  import inMonorepo from "../../utils/inMonorepo.js";
4
+ import { latestLTS } from "../../utils/node.js";
4
5
  import * as packageUtils from "../../utils/package.js";
5
6
 
6
7
  export default class PobLibGenerator extends Generator {
@@ -160,6 +161,12 @@ export default class PobLibGenerator extends Generator {
160
161
  pkg.pob.jsx = jsx;
161
162
  }
162
163
 
164
+ this.onlyLatestLTS = pkg.pob.envs
165
+ ? pkg.pob.envs
166
+ .filter((env) => env.target === "node")
167
+ .every((env) => env.version === latestLTS)
168
+ : false;
169
+
163
170
  this.fs.writeJSON(this.destinationPath("package.json"), pkg);
164
171
  }
165
172
 
@@ -245,14 +252,14 @@ export default class PobLibGenerator extends Generator {
245
252
  testing: !!this.pobjson.testing,
246
253
  documentation: !!this.pobjson.documentation,
247
254
  fromPob: this.options.fromPob,
248
- onlyLatestLTS: false,
255
+ onlyLatestLTS: this.onlyLatestLTS,
249
256
  });
250
257
  this.composeWith("pob:common:transpiler", {
251
258
  updateOnly: this.options.updateOnly,
252
259
  testing: !!this.pobjson.testing,
253
260
  documentation: !!this.pobjson.documentation,
254
261
  fromPob: this.options.fromPob,
255
- onlyLatestLTS: false,
262
+ onlyLatestLTS: this.onlyLatestLTS,
256
263
  });
257
264
  }
258
265
 
@@ -266,7 +273,8 @@ export default class PobLibGenerator extends Generator {
266
273
  [];
267
274
 
268
275
  const withBabel = babelEnvs.length > 0;
269
- const withTypescript = withBabel || pkg.pob.typescript === true;
276
+ const withTypescript =
277
+ withBabel || pkg.pob.typescript === true || pkg.pob.bundler === "tsc";
270
278
  const jsx = (withBabel || withTypescript) && pkg.pob.jsx === true;
271
279
  const browser = pkg.pob.envs?.some((env) => env.target === "browser");
272
280
 
@@ -286,7 +294,7 @@ export default class PobLibGenerator extends Generator {
286
294
  updateOnly: this.options.updateOnly,
287
295
  baseUrl: "none", // causes issues on dist definition files
288
296
  builddefs: true,
289
- onlyLatestLTS: false,
297
+ onlyLatestLTS: this.onlyLatestLTS,
290
298
  srcDirectory: withTypescript ? "src" : "lib",
291
299
  });
292
300
 
@@ -317,6 +325,7 @@ export default class PobLibGenerator extends Generator {
317
325
  isApp: false,
318
326
  splitCIJobs: false,
319
327
  srcDirectory: withBabel || withTypescript ? "src" : "lib",
328
+ onlyLatestLTS: this.onlyLatestLTS,
320
329
  });
321
330
 
322
331
  // must be after testing
@@ -403,7 +412,8 @@ export default class PobLibGenerator extends Generator {
403
412
  (!pkg.pob.bundler && pkg.pob.typescript !== true && pkg.pob.envs) ||
404
413
  pkg.pob.bundler === "rollup-babel",
405
414
  );
406
- const withTypescript = withBabel || pkg.pob.typescript === true;
415
+ const withTypescript =
416
+ withBabel || pkg.pob.typescript === true || pkg.pob.bundler === "tsc";
407
417
 
408
418
  packageUtils.removeDevDependencies(pkg, ["lerna", "@pob/lerna-light"]);
409
419
  if (inMonorepo) {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "pob",
3
- "version": "24.2.0",
3
+ "version": "24.3.1",
4
4
  "description": "Pile of bones, library generator with git/babel/typescript/typedoc/readme/jest",
5
5
  "keywords": [
6
6
  "skeleton"
@@ -49,9 +49,9 @@
49
49
  "@pob/sort-pkg": "9.0.0",
50
50
  "@prettier/sync": "0.5.2",
51
51
  "@types/inquirer": "9.0.7",
52
- "@yarnpkg/cli": "4.5.1",
53
- "@yarnpkg/core": "4.1.4",
54
- "@yarnpkg/fslib": "3.1.0",
52
+ "@yarnpkg/cli": "4.5.3",
53
+ "@yarnpkg/core": "4.1.6",
54
+ "@yarnpkg/fslib": "3.1.1",
55
55
  "@yeoman/types": "1.5.0",
56
56
  "eslint": "9.14.0",
57
57
  "findup-sync": "^5.0.0",
@@ -65,17 +65,17 @@
65
65
  "mem-fs-editor": "11.1.3",
66
66
  "minimist": "1.2.8",
67
67
  "parse-author": "2.0.0",
68
- "pob-dependencies": "15.1.1",
69
- "prettier": "3.3.3",
68
+ "pob-dependencies": "15.2.2",
69
+ "prettier": "3.4.1",
70
70
  "semver": "7.6.3",
71
71
  "validate-npm-package-name": "^6.0.0",
72
- "yarn-workspace-utils": "7.0.0",
72
+ "yarn-workspace-utils": "7.0.2",
73
73
  "yeoman-environment": "4.4.3",
74
74
  "yeoman-generator": "7.3.3"
75
75
  },
76
76
  "devDependencies": {
77
- "@pob/root": "14.1.0",
78
- "@types/node": "22.9.0",
79
- "typescript": "5.6.3"
77
+ "@pob/root": "14.2.1",
78
+ "@types/node": "22.10.1",
79
+ "typescript": "5.7.2"
80
80
  }
81
81
  }