pob 19.2.0 → 21.0.0

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.
Files changed (50) hide show
  1. package/CHANGELOG.md +59 -0
  2. package/lib/generators/app/PobAppGenerator.js +124 -122
  3. package/lib/generators/app/e2e-testing/AppE2ETestingGenerator.js +11 -11
  4. package/lib/generators/app/ignorePaths.js +25 -24
  5. package/lib/generators/app/nextjs/AppNextjsGenerator.js +9 -9
  6. package/lib/generators/app/remix/AppRemixGenerator.js +7 -7
  7. package/lib/generators/common/babel/CommonBabelGenerator.js +167 -151
  8. package/lib/generators/common/format-lint/CommonLintGenerator.js +185 -180
  9. package/lib/generators/common/format-lint/updateEslintConfig.js +9 -9
  10. package/lib/generators/common/husky/CommonHuskyGenerator.js +44 -44
  11. package/lib/generators/common/husky/templates/lint-staged.config.js.txt +1 -1
  12. package/lib/generators/common/old-dependencies/CommonRemoveOldDependenciesGenerator.js +44 -44
  13. package/lib/generators/common/release/CommonReleaseGenerator.js +40 -39
  14. package/lib/generators/common/release/templates/workflow-release.yml.ejs +2 -2
  15. package/lib/generators/common/testing/CommonTestingGenerator.js +193 -191
  16. package/lib/generators/common/testing/templates/index.js +3 -3
  17. package/lib/generators/common/transpiler/CommonTranspilerGenerator.js +160 -167
  18. package/lib/generators/common/typescript/CommonTypescriptGenerator.js +79 -75
  19. package/lib/generators/core/ci/CoreCIGenerator.js +70 -75
  20. package/lib/generators/core/clean/CoreCleanGenerator.js +4 -4
  21. package/lib/generators/core/editorconfig/CoreEditorConfigGenerator.js +3 -3
  22. package/lib/generators/core/git/CoreGitGenerator.js +42 -42
  23. package/lib/generators/core/git/generators/github/CoreGitGithubGenerator.js +41 -41
  24. package/lib/generators/core/gitignore/CoreGitignoreGenerator.js +19 -23
  25. package/lib/generators/core/npm/CoreNpmGenerator.js +19 -19
  26. package/lib/generators/core/package/CorePackageGenerator.js +94 -94
  27. package/lib/generators/core/package/askName.js +4 -4
  28. package/lib/generators/core/renovate/CoreRenovateGenerator.js +26 -26
  29. package/lib/generators/core/sort-package/CoreSortPackageGenerator.js +5 -5
  30. package/lib/generators/core/vscode/CoreVSCodeGenerator.js +39 -38
  31. package/lib/generators/core/yarn/CoreYarnGenerator.js +82 -77
  32. package/lib/generators/lib/PobLibGenerator.js +127 -125
  33. package/lib/generators/lib/doc/LibDocGenerator.js +40 -40
  34. package/lib/generators/lib/readme/LibReadmeGenerator.js +19 -19
  35. package/lib/generators/monorepo/PobMonorepoGenerator.js +87 -86
  36. package/lib/generators/monorepo/lerna/MonorepoLernaGenerator.js +44 -40
  37. package/lib/generators/monorepo/typescript/MonorepoTypescriptGenerator.js +35 -35
  38. package/lib/generators/monorepo/workspaces/MonorepoWorkspacesGenerator.js +60 -56
  39. package/lib/generators/pob/PobBaseGenerator.js +83 -83
  40. package/lib/pob-dirname.cjs +1 -1
  41. package/lib/pob.js +112 -112
  42. package/lib/utils/dependenciesPackages.cjs +4 -4
  43. package/lib/utils/ensureJsonFileFormatted.js +5 -5
  44. package/lib/utils/inMonorepo.js +8 -8
  45. package/lib/utils/json5.js +1 -1
  46. package/lib/utils/package.js +37 -37
  47. package/lib/utils/packagejson.js +5 -0
  48. package/lib/utils/writeAndFormat.js +8 -9
  49. package/package.json +23 -19
  50. package/lib/utils/packagejson.cjs +0 -3
@@ -1,135 +1,144 @@
1
- import semver from 'semver';
2
- import Generator from 'yeoman-generator';
3
- import * as packageUtils from '../../../utils/package.js';
4
- import { copyAndFormatTpl } from '../../../utils/writeAndFormat.js';
1
+ import semver from "semver";
2
+ import Generator from "yeoman-generator";
3
+ import * as packageUtils from "../../../utils/package.js";
4
+ import { copyAndFormatTpl } from "../../../utils/writeAndFormat.js";
5
5
 
6
+ /** @deprecated */
6
7
  export default class CommonBabelGenerator extends Generator {
7
8
  constructor(args, opts) {
8
9
  super(args, opts);
9
10
 
10
- this.option('updateOnly', {
11
+ this.option("updateOnly", {
11
12
  type: Boolean,
12
13
  required: false,
13
14
  default: false,
14
- desc: 'Avoid asking questions',
15
+ description: "Avoid asking questions",
15
16
  });
16
17
 
17
- this.option('testing', {
18
+ this.option("testing", {
18
19
  type: Boolean,
19
20
  required: false,
20
21
  default: false,
21
- desc: 'Has testing.',
22
+ description: "Has testing.",
22
23
  });
23
24
 
24
- this.option('fromPob', {
25
+ this.option("fromPob", {
25
26
  type: Boolean,
26
27
  required: false,
27
28
  default: false,
28
29
  });
29
30
 
30
- this.option('isApp', {
31
+ this.option("isApp", {
31
32
  type: Boolean,
32
33
  required: false,
33
34
  default: false,
34
35
  });
35
36
 
36
- this.option('isAppLibrary', {
37
+ this.option("isAppLibrary", {
37
38
  type: Boolean,
38
39
  required: false,
39
40
  default: false,
40
41
  });
41
42
 
42
- this.option('useAppConfig', {
43
+ this.option("useAppConfig", {
43
44
  type: Boolean,
44
45
  required: false,
45
46
  default: false,
46
47
  });
47
48
 
48
- this.option('buildDirectory', {
49
+ this.option("buildDirectory", {
49
50
  type: String,
50
51
  required: false,
51
- default: 'dist',
52
+ default: "dist",
52
53
  });
53
54
 
54
- this.option('onlyLatestLTS', {
55
+ this.option("onlyLatestLTS", {
55
56
  type: Boolean,
56
57
  required: false,
57
58
  default: false,
58
- desc: 'only latest lts',
59
+ description: "only latest lts",
59
60
  });
60
61
  }
61
62
 
62
63
  initializing() {
63
- const pkg = this.fs.readJSON(this.destinationPath('package.json'));
64
+ const pkg = this.fs.readJSON(this.destinationPath("package.json"));
64
65
 
65
- if (pkg.pob && pkg.pob.babelEnvs) {
66
- let babelEnvs = pkg.pob.babelEnvs;
66
+ if (
67
+ pkg.pob &&
68
+ (pkg.pob.babelEnvs ||
69
+ (pkg.pob.envs && pkg.pob.bundler === "rollup-babel"))
70
+ ) {
71
+ let babelEnvs = pkg.pob.babelEnvs || pkg.pob.envs;
67
72
  if (
68
73
  !babelEnvs.some(
69
74
  (env) =>
70
- env.target === 'node' &&
71
- String(env.version) === (this.options.onlyLatestLTS ? '20' : '18'),
75
+ env.target === "node" &&
76
+ String(env.version) === (this.options.onlyLatestLTS ? "20" : "18"),
72
77
  ) &&
73
78
  babelEnvs.some(
74
79
  (env) =>
75
- env.target === 'node' &&
76
- (['8', '6', '10', '12', '14', '16'].includes(String(env.version)) ||
77
- (this.options.onlyLatestLTS && String(env.version) === '18')),
80
+ env.target === "node" &&
81
+ (["8", "6", "10", "12", "14", "16"].includes(String(env.version)) ||
82
+ (this.options.onlyLatestLTS && String(env.version) === "18")),
78
83
  )
79
84
  ) {
80
85
  babelEnvs.unshift({
81
- target: 'node',
82
- version: this.options.onlyLatestLTS ? '20' : '18',
86
+ target: "node",
87
+ version: this.options.onlyLatestLTS ? "20" : "18",
83
88
  omitVersionInFileName: this.options.onlyLatestLTS ? true : undefined,
84
89
  });
85
90
  }
86
91
  babelEnvs = babelEnvs.filter(
87
92
  (env) =>
88
- env.target !== 'node' ||
93
+ env.target !== "node" ||
89
94
  env.version >= (this.options.onlyLatestLTS ? 20 : 18),
90
95
  );
91
96
 
92
- pkg.pob.babelEnvs = babelEnvs;
93
- this.fs.writeJSON(this.destinationPath('package.json'), pkg);
97
+ delete pkg.pob.babelEnvs;
98
+ pkg.pob.bundler = "rollup-babel";
99
+ pkg.pob.envs = babelEnvs;
100
+ this.fs.writeJSON(this.destinationPath("package.json"), pkg);
94
101
  }
95
102
  }
96
103
 
97
104
  async prompting() {
98
- const pkg = this.fs.readJSON(this.destinationPath('package.json'));
105
+ const pkg = this.fs.readJSON(this.destinationPath("package.json"));
99
106
 
100
107
  const hasInitialPkgPob = !!pkg.pob;
101
-
102
108
  if (!hasInitialPkgPob) pkg.pob = {};
103
109
 
104
- const babelEnvs = pkg.pob.babelEnvs || [];
110
+ const babelEnvs =
111
+ pkg.pob.babelEnvs ||
112
+ (pkg.pob.bundler === "rollup-babel" && pkg.pob.envs) ||
113
+ [];
105
114
 
106
115
  const targets = [
107
- babelEnvs.some((env) => env.target === 'node') ? 'node' : undefined,
108
- babelEnvs.some((env) => env.target === 'browser') ? 'browser' : undefined,
116
+ babelEnvs.some((env) => env.target === "node") ? "node" : undefined,
117
+ babelEnvs.some((env) => env.target === "browser") ? "browser" : undefined,
109
118
  ].filter(Boolean);
110
119
  const nodeVersions = [
111
120
  ...new Set(
112
121
  babelEnvs
113
- .filter((env) => env.target === 'node')
122
+ .filter((env) => env.target === "node")
114
123
  .map((env) => {
115
124
  if (
116
- env.version === '14' ||
117
- env.version === '16' ||
118
- (this.options.onlyLatestLTS && env.version === '18')
125
+ env.version === "14" ||
126
+ env.version === "16" ||
127
+ (this.options.onlyLatestLTS && env.version === "18")
119
128
  ) {
120
- return this.options.onlyLatestLTS ? '20' : '18';
129
+ return this.options.onlyLatestLTS ? "20" : "18";
121
130
  }
122
131
  return env.version;
123
132
  }),
124
133
  ),
125
134
  ];
126
135
  const browserVersions = babelEnvs
127
- .filter((env) => env.target === 'browser')
128
- .map((env) => (env.version === undefined ? 'supported' : env.version));
136
+ .filter((env) => env.target === "browser")
137
+ .map((env) => (env.version === undefined ? "supported" : env.version));
129
138
  const formats = [
130
- babelEnvs.some((env) => env.formats?.includes('cjs')) ? 'cjs' : undefined,
131
- babelEnvs.some((env) => !env.formats || env.formats.includes('es'))
132
- ? 'es'
139
+ babelEnvs.some((env) => env.formats?.includes("cjs")) ? "cjs" : undefined,
140
+ babelEnvs.some((env) => !env.formats || env.formats.includes("es"))
141
+ ? "es"
133
142
  : undefined,
134
143
  ].filter(Boolean);
135
144
  const jsx =
@@ -142,38 +151,38 @@ export default class CommonBabelGenerator extends Generator {
142
151
  if (!hasInitialPkgPob || !this.options.updateOnly) {
143
152
  babelConfig = await this.prompt([
144
153
  {
145
- type: 'checkbox',
146
- name: 'targets',
154
+ type: "checkbox",
155
+ name: "targets",
147
156
  message:
148
157
  "Babel targets: (don't select anything if you don't want babel)",
149
158
  default: targets,
150
159
  choices: [
151
160
  {
152
- name: 'Node',
153
- value: 'node',
161
+ name: "Node",
162
+ value: "node",
154
163
  },
155
164
  {
156
- name: 'Browser',
157
- value: 'browser',
165
+ name: "Browser",
166
+ value: "browser",
158
167
  },
159
168
  ],
160
169
  },
161
170
 
162
171
  {
163
- type: 'checkbox',
164
- name: 'nodeVersions',
165
- message: 'Babel node versions: (https://github.com/nodejs/Release)',
166
- when: ({ targets = [] }) => targets.includes('node'),
172
+ type: "checkbox",
173
+ name: "nodeVersions",
174
+ message: "Babel node versions: (https://github.com/nodejs/Release)",
175
+ when: ({ targets = [] }) => targets.includes("node"),
167
176
  validate: (versions) => versions.length > 0,
168
177
  default: nodeVersions,
169
178
  choices: [
170
179
  {
171
- name: '20 (Active LTS)',
172
- value: '20',
180
+ name: "20 (Active LTS)",
181
+ value: "20",
173
182
  },
174
183
  {
175
- name: '18 (Maintenance LTS)',
176
- value: '18',
184
+ name: "18 (Maintenance LTS)",
185
+ value: "18",
177
186
  },
178
187
  ],
179
188
  },
@@ -198,23 +207,23 @@ export default class CommonBabelGenerator extends Generator {
198
207
  // },
199
208
 
200
209
  {
201
- type: 'confirm',
202
- name: 'jsx',
203
- message: 'Enable JSX ?',
210
+ type: "confirm",
211
+ name: "jsx",
212
+ message: "Enable JSX ?",
204
213
  when: ({ targets = [] }) => targets.length > 0,
205
214
  default: jsx,
206
215
  },
207
216
  ]);
208
217
  }
209
218
 
210
- if (babelConfig.targets.includes('browser')) {
211
- babelConfig.browserVersions = ['supported'];
219
+ if (babelConfig.targets.includes("browser")) {
220
+ babelConfig.browserVersions = ["supported"];
212
221
  }
213
222
 
214
223
  if (hasInitialPkgPob && pkg.main && !pkg.exports) {
215
224
  const result = await this.prompt({
216
- type: 'confirm',
217
- name: 'setupExports',
225
+ type: "confirm",
226
+ name: "setupExports",
218
227
  message: 'Setup package.json "exports" field based on "main" ?',
219
228
  });
220
229
 
@@ -225,26 +234,26 @@ export default class CommonBabelGenerator extends Generator {
225
234
 
226
235
  const newBabelEnvs = [
227
236
  ...(babelConfig.nodeVersions || []).map((version) => ({
228
- target: 'node',
237
+ target: "node",
229
238
  version,
230
239
  formats:
231
- babelConfig.formats && babelConfig.formats.includes('cjs')
240
+ babelConfig.formats && babelConfig.formats.includes("cjs")
232
241
  ? // eslint-disable-next-line unicorn/no-nested-ternary
233
- version === '18' || version === '20'
242
+ version === "18" || version === "20"
234
243
  ? babelConfig.formats
235
244
  : undefined
236
245
  : undefined,
237
246
  omitVersionInFileName:
238
247
  // todo add `|| babelConfig.nodeVersions.length === 1` in next major
239
- version === '20' && this.options.onlyLatestLTS ? true : undefined,
248
+ version === "20" && this.options.onlyLatestLTS ? true : undefined,
240
249
  })),
241
250
  ...(babelConfig.browserVersions || []).map((version) => ({
242
- target: 'browser',
243
- version: version === 'supported' ? undefined : version,
251
+ target: "browser",
252
+ version: version === "supported" ? undefined : version,
244
253
  formats:
245
- babelConfig.formats && babelConfig.formats.includes('cjs')
254
+ babelConfig.formats && babelConfig.formats.includes("cjs")
246
255
  ? // eslint-disable-next-line unicorn/no-nested-ternary
247
- version === 'supported'
256
+ version === "supported"
248
257
  ? babelConfig.formats
249
258
  : undefined
250
259
  : undefined,
@@ -253,14 +262,18 @@ export default class CommonBabelGenerator extends Generator {
253
262
 
254
263
  delete pkg.pob.withReact;
255
264
  if (newBabelEnvs.length === 0) {
256
- delete pkg.pob.babelEnvs;
257
- if (!pkg.pob.typescript) {
258
- delete pkg.pob.entries;
259
- delete pkg.pob.jsx;
265
+ if (!pkg.pob.bundler || pkg.pob.bundler === "rollup-babel") {
266
+ delete pkg.pob.envs;
267
+ delete pkg.pob.babelEnvs;
268
+ if (!pkg.pob.typescript) {
269
+ delete pkg.pob.entries;
270
+ delete pkg.pob.jsx;
271
+ }
260
272
  }
261
273
  } else {
262
- pkg.pob.babelEnvs = newBabelEnvs;
263
- pkg.pob.entries = pkg.pob.entries || ['index'];
274
+ pkg.pob.bundler = "rollup-babel";
275
+ pkg.pob.envs = newBabelEnvs;
276
+ pkg.pob.entries = pkg.pob.entries || ["index"];
264
277
  if (pkg.pob.jsx) {
265
278
  pkg.pob.jsx = jsx;
266
279
  } else {
@@ -268,13 +281,16 @@ export default class CommonBabelGenerator extends Generator {
268
281
  }
269
282
  }
270
283
 
271
- this.fs.writeJSON(this.destinationPath('package.json'), pkg);
284
+ this.fs.writeJSON(this.destinationPath("package.json"), pkg);
272
285
  }
273
286
 
274
287
  configuring() {
275
- const pkg = this.fs.readJSON(this.destinationPath('package.json'));
288
+ const pkg = this.fs.readJSON(this.destinationPath("package.json"));
276
289
  this.entries = pkg.pob.entries;
277
- this.babelEnvs = pkg.pob.babelEnvs || [];
290
+ this.babelEnvs =
291
+ pkg.pob.babelEnvs ||
292
+ (pkg.pob.bundler === "rollup-babel" && pkg.pob.envs) ||
293
+ [];
278
294
 
279
295
  if (this.entries) {
280
296
  this.entries.forEach((entry) => {
@@ -301,57 +317,57 @@ export default class CommonBabelGenerator extends Generator {
301
317
  }
302
318
 
303
319
  default() {
304
- const pkg = this.fs.readJSON(this.destinationPath('package.json'));
320
+ const pkg = this.fs.readJSON(this.destinationPath("package.json"));
305
321
  const useBabel = this.babelEnvs && this.babelEnvs.length > 0;
306
322
  const useTypescript = useBabel || pkg.pob?.typescript;
307
323
  const hasTargetNode = useBabel
308
- ? this.babelEnvs.find((env) => env.target === 'node')
324
+ ? this.babelEnvs.find((env) => env.target === "node")
309
325
  : useTypescript; // todo pkg.pob.typescriptTargets
310
326
  const hasTargetBrowser = this.babelEnvs.find(
311
- (env) => env.target === 'browser',
327
+ (env) => env.target === "browser",
312
328
  );
313
329
 
314
330
  /* dependencies */
315
331
 
316
332
  packageUtils.addOrRemoveDevDependencies(
317
333
  pkg,
318
- useBabel || (pkg.peerDependencies && pkg.peerDependencies['@babel/core']),
319
- ['@babel/core'],
334
+ useBabel || (pkg.peerDependencies && pkg.peerDependencies["@babel/core"]),
335
+ ["@babel/core"],
320
336
  );
321
- packageUtils.addOrRemoveDevDependencies(pkg, useBabel, ['pob-babel']);
337
+ packageUtils.addOrRemoveDevDependencies(pkg, useBabel, ["pob-babel"]);
322
338
 
323
- if (pkg.dependencies && pkg.dependencies['pob-babel']) {
339
+ if (pkg.dependencies && pkg.dependencies["pob-babel"]) {
324
340
  // update pob-babel in alp-dev
325
- packageUtils.addDependencies(pkg, ['pob-babel'], '^');
341
+ packageUtils.addDependencies(pkg, ["pob-babel"], "^");
326
342
  }
327
- if (pkg.dependencies && pkg.dependencies['@babel/runtime']) {
343
+ if (pkg.dependencies && pkg.dependencies["@babel/runtime"]) {
328
344
  // update pob-babel in alp-dev
329
- packageUtils.addDependencies(pkg, ['@babel/runtime'], '^');
345
+ packageUtils.addDependencies(pkg, ["@babel/runtime"], "^");
330
346
  }
331
347
 
332
- const isLibraryRollupPlugin = pkg.name.includes('rollup-plugin');
348
+ const isLibraryRollupPlugin = pkg.name.includes("rollup-plugin");
333
349
 
334
350
  packageUtils.addOrRemoveDevDependencies(
335
351
  pkg,
336
352
  (useBabel && pkg.pob.jsx) ||
337
- (pkg.devDependencies?.['@babel/preset-react'] && isLibraryRollupPlugin),
338
- ['@babel/preset-react'],
353
+ (pkg.devDependencies?.["@babel/preset-react"] && isLibraryRollupPlugin),
354
+ ["@babel/preset-react"],
339
355
  );
340
356
 
341
357
  packageUtils.removeDevDependencies(pkg, [
342
- 'babel-preset-env', // now @babel/preset-env
343
- 'babel-preset-jsdoc',
344
- 'babel-plugin-add-jsdoc-annotations',
345
- 'babel-preset-modern-browsers',
358
+ "babel-preset-env", // now @babel/preset-env
359
+ "babel-preset-jsdoc",
360
+ "babel-plugin-add-jsdoc-annotations",
361
+ "babel-preset-modern-browsers",
346
362
  ]);
347
363
 
348
364
  packageUtils.addOrRemoveDevDependencies(
349
365
  pkg,
350
366
  this.babelEnvs.find(
351
- (env) => env.target === 'browser' && env.version === undefined,
367
+ (env) => env.target === "browser" && env.version === undefined,
352
368
  ) ||
353
- (pkg.devDependencies?.['@babel/preset-env'] && isLibraryRollupPlugin),
354
- ['@babel/preset-env'],
369
+ (pkg.devDependencies?.["@babel/preset-env"] && isLibraryRollupPlugin),
370
+ ["@babel/preset-env"],
355
371
  );
356
372
 
357
373
  /* engines */
@@ -361,47 +377,47 @@ export default class CommonBabelGenerator extends Generator {
361
377
  const minNodeVersion = useBabel
362
378
  ? Math.min(
363
379
  ...this.babelEnvs
364
- .filter((env) => env.target === 'node')
380
+ .filter((env) => env.target === "node")
365
381
  .map((env) => env.version),
366
382
  )
367
383
  : // eslint-disable-next-line unicorn/no-unreadable-iife
368
- (() => (this.options.onlyLatestLTS ? '20' : '18'))();
384
+ (() => (this.options.onlyLatestLTS ? "20" : "18"))();
369
385
  switch (String(minNodeVersion)) {
370
- case '10':
371
- case '12':
372
- case '14':
373
- case '16':
374
- case '18':
375
- pkg.engines.node = '>=18.12.0';
386
+ case "10":
387
+ case "12":
388
+ case "14":
389
+ case "16":
390
+ case "18":
391
+ pkg.engines.node = ">=18.12.0";
376
392
  break;
377
- case '20':
378
- pkg.engines.node = '>=20.9.0';
393
+ case "20":
394
+ pkg.engines.node = ">=20.9.0";
379
395
  break;
380
396
  default:
381
397
  throw new Error(`Invalid min node version: ${minNodeVersion}`);
382
398
  }
383
399
 
384
- if (pkg.dependencies && pkg.dependencies['@types/node']) {
385
- pkg.dependencies['@types/node'] = `>=${minNodeVersion}.0.0`;
400
+ if (pkg.dependencies && pkg.dependencies["@types/node"]) {
401
+ pkg.dependencies["@types/node"] = `>=${minNodeVersion}.0.0`;
386
402
  }
387
403
  if (
388
404
  pkg.devDependencies &&
389
- pkg.devDependencies['@types/node'] &&
405
+ pkg.devDependencies["@types/node"] &&
390
406
  !semver.satisfies(
391
- pkg.devDependencies['@types/node'],
407
+ pkg.devDependencies["@types/node"],
392
408
  `>=${minNodeVersion}.0.0`,
393
409
  )
394
410
  ) {
395
- pkg.devDependencies['@types/node'] = `>=${minNodeVersion}.0.0`;
411
+ pkg.devDependencies["@types/node"] = `>=${minNodeVersion}.0.0`;
396
412
  }
397
413
  } else {
398
- packageUtils.removeDependencies(pkg, ['@types/node']);
399
- packageUtils.removeDevDependencies(pkg, ['@types/node']);
414
+ packageUtils.removeDependencies(pkg, ["@types/node"]);
415
+ packageUtils.removeDevDependencies(pkg, ["@types/node"]);
400
416
  // Supports oldest current or active LTS version of node
401
417
  if (this.options.onlyLatestLTS) {
402
- pkg.engines.node = '>=20.9.0';
418
+ pkg.engines.node = ">=20.9.0";
403
419
  } else {
404
- pkg.engines.node = '>=18.12.0';
420
+ pkg.engines.node = ">=18.12.0";
405
421
  }
406
422
  }
407
423
 
@@ -414,11 +430,11 @@ export default class CommonBabelGenerator extends Generator {
414
430
  pkg.browserslist = {
415
431
  ...(Array.isArray(pkg.browserslist) ? {} : pkg.browserslist),
416
432
  production: [
417
- 'defaults',
418
- '> 0.2%',
419
- 'not ie < 12',
420
- 'not safari < 10',
421
- 'not ios_saf < 10',
433
+ "defaults",
434
+ "> 0.2%",
435
+ "not ie < 12",
436
+ "not safari < 10",
437
+ "not ios_saf < 10",
422
438
  ],
423
439
  // configured in babel preset
424
440
  // modern: ['defaults and >1% and supports es6-module'],
@@ -431,72 +447,72 @@ export default class CommonBabelGenerator extends Generator {
431
447
  pkg.browserslist = {
432
448
  ...pkg.browserslist,
433
449
  production: [
434
- 'defaults',
435
- '> 0.2%',
436
- 'not ie < 12',
437
- 'not safari < 10',
438
- 'not ios_saf < 10',
450
+ "defaults",
451
+ "> 0.2%",
452
+ "not ie < 12",
453
+ "not safari < 10",
454
+ "not ios_saf < 10",
439
455
  ],
440
456
  };
441
457
  } else {
442
458
  delete pkg.browserslist;
443
459
  }
444
460
 
445
- this.fs.writeJSON(this.destinationPath('package.json'), pkg);
461
+ this.fs.writeJSON(this.destinationPath("package.json"), pkg);
446
462
  }
447
463
 
448
464
  writing() {
449
- this.fs.delete('types.js');
465
+ this.fs.delete("types.js");
450
466
 
451
- const pkg = this.fs.readJSON(this.destinationPath('package.json'));
467
+ const pkg = this.fs.readJSON(this.destinationPath("package.json"));
452
468
 
453
469
  const useBabel = this.babelEnvs && this.babelEnvs.length > 0;
454
- const entries = pkg.pob.entries || ['index'];
470
+ const entries = pkg.pob.entries || ["index"];
455
471
 
456
472
  /* pob-babel config */
457
473
 
458
- packageUtils.removeDevDependencies(pkg, ['@rollup/plugin-run']);
459
- packageUtils.removeDependencies(pkg, ['alp-rollup-plugin-config']);
474
+ packageUtils.removeDevDependencies(pkg, ["@rollup/plugin-run"]);
475
+ packageUtils.removeDependencies(pkg, ["alp-rollup-plugin-config"]);
460
476
 
461
- this.fs.delete('rollup.config.js');
477
+ this.fs.delete("rollup.config.js");
462
478
  if (useBabel) {
463
479
  if (this.options.isApp) {
464
480
  copyAndFormatTpl(
465
481
  this.fs,
466
- this.templatePath('app.rollup.config.mjs.ejs'),
467
- this.destinationPath('rollup.config.mjs'),
482
+ this.templatePath("app.rollup.config.mjs.ejs"),
483
+ this.destinationPath("rollup.config.mjs"),
468
484
  {
469
485
  config: this.options.useAppConfig,
470
486
  outDirectory: this.options.buildDirectory,
471
- enableRun: !this.options.isAppLibrary && entries.includes('index'),
487
+ enableRun: !this.options.isAppLibrary && entries.includes("index"),
472
488
  },
473
489
  );
474
490
  } else {
475
491
  copyAndFormatTpl(
476
492
  this.fs,
477
- this.templatePath('lib.rollup.config.mjs.ejs'),
478
- this.destinationPath('rollup.config.mjs'),
493
+ this.templatePath("lib.rollup.config.mjs.ejs"),
494
+ this.destinationPath("rollup.config.mjs"),
479
495
  {
480
496
  outDirectory: this.options.buildDirectory,
481
497
  },
482
498
  );
483
499
  }
484
500
  } else if (!pkg.pob.typescript && pkg.pob.rollup !== false) {
485
- this.fs.delete('rollup.config.mjs');
501
+ this.fs.delete("rollup.config.mjs");
486
502
  }
487
503
 
488
504
  /* jest babel config */
489
505
 
490
- this.fs.delete('.babelrc');
491
- this.fs.delete('babel.config.json');
492
- this.fs.delete('babel.config.mjs');
493
- if (this.fs.exists(this.destinationPath('babel.config.js'))) {
506
+ this.fs.delete(".babelrc");
507
+ this.fs.delete("babel.config.json");
508
+ this.fs.delete("babel.config.mjs");
509
+ if (this.fs.exists(this.destinationPath("babel.config.js"))) {
494
510
  this.fs.move(
495
- this.destinationPath('babel.config.js'),
496
- this.destinationPath('babel.config.cjs'),
511
+ this.destinationPath("babel.config.js"),
512
+ this.destinationPath("babel.config.cjs"),
497
513
  );
498
514
  }
499
515
 
500
- this.fs.writeJSON(this.destinationPath('package.json'), pkg);
516
+ this.fs.writeJSON(this.destinationPath("package.json"), pkg);
501
517
  }
502
518
  }