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.
- package/CHANGELOG.md +59 -0
- package/lib/generators/app/PobAppGenerator.js +124 -122
- package/lib/generators/app/e2e-testing/AppE2ETestingGenerator.js +11 -11
- package/lib/generators/app/ignorePaths.js +25 -24
- package/lib/generators/app/nextjs/AppNextjsGenerator.js +9 -9
- package/lib/generators/app/remix/AppRemixGenerator.js +7 -7
- package/lib/generators/common/babel/CommonBabelGenerator.js +167 -151
- package/lib/generators/common/format-lint/CommonLintGenerator.js +185 -180
- package/lib/generators/common/format-lint/updateEslintConfig.js +9 -9
- package/lib/generators/common/husky/CommonHuskyGenerator.js +44 -44
- package/lib/generators/common/husky/templates/lint-staged.config.js.txt +1 -1
- package/lib/generators/common/old-dependencies/CommonRemoveOldDependenciesGenerator.js +44 -44
- package/lib/generators/common/release/CommonReleaseGenerator.js +40 -39
- package/lib/generators/common/release/templates/workflow-release.yml.ejs +2 -2
- package/lib/generators/common/testing/CommonTestingGenerator.js +193 -191
- package/lib/generators/common/testing/templates/index.js +3 -3
- package/lib/generators/common/transpiler/CommonTranspilerGenerator.js +160 -167
- package/lib/generators/common/typescript/CommonTypescriptGenerator.js +79 -75
- package/lib/generators/core/ci/CoreCIGenerator.js +70 -75
- package/lib/generators/core/clean/CoreCleanGenerator.js +4 -4
- package/lib/generators/core/editorconfig/CoreEditorConfigGenerator.js +3 -3
- package/lib/generators/core/git/CoreGitGenerator.js +42 -42
- package/lib/generators/core/git/generators/github/CoreGitGithubGenerator.js +41 -41
- package/lib/generators/core/gitignore/CoreGitignoreGenerator.js +19 -23
- package/lib/generators/core/npm/CoreNpmGenerator.js +19 -19
- package/lib/generators/core/package/CorePackageGenerator.js +94 -94
- package/lib/generators/core/package/askName.js +4 -4
- package/lib/generators/core/renovate/CoreRenovateGenerator.js +26 -26
- package/lib/generators/core/sort-package/CoreSortPackageGenerator.js +5 -5
- package/lib/generators/core/vscode/CoreVSCodeGenerator.js +39 -38
- package/lib/generators/core/yarn/CoreYarnGenerator.js +82 -77
- package/lib/generators/lib/PobLibGenerator.js +127 -125
- package/lib/generators/lib/doc/LibDocGenerator.js +40 -40
- package/lib/generators/lib/readme/LibReadmeGenerator.js +19 -19
- package/lib/generators/monorepo/PobMonorepoGenerator.js +87 -86
- package/lib/generators/monorepo/lerna/MonorepoLernaGenerator.js +44 -40
- package/lib/generators/monorepo/typescript/MonorepoTypescriptGenerator.js +35 -35
- package/lib/generators/monorepo/workspaces/MonorepoWorkspacesGenerator.js +60 -56
- package/lib/generators/pob/PobBaseGenerator.js +83 -83
- package/lib/pob-dirname.cjs +1 -1
- package/lib/pob.js +112 -112
- package/lib/utils/dependenciesPackages.cjs +4 -4
- package/lib/utils/ensureJsonFileFormatted.js +5 -5
- package/lib/utils/inMonorepo.js +8 -8
- package/lib/utils/json5.js +1 -1
- package/lib/utils/package.js +37 -37
- package/lib/utils/packagejson.js +5 -0
- package/lib/utils/writeAndFormat.js +8 -9
- package/package.json +23 -19
- package/lib/utils/packagejson.cjs +0 -3
|
@@ -1,135 +1,144 @@
|
|
|
1
|
-
import semver from
|
|
2
|
-
import Generator from
|
|
3
|
-
import * as packageUtils from
|
|
4
|
-
import { copyAndFormatTpl } from
|
|
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(
|
|
11
|
+
this.option("updateOnly", {
|
|
11
12
|
type: Boolean,
|
|
12
13
|
required: false,
|
|
13
14
|
default: false,
|
|
14
|
-
|
|
15
|
+
description: "Avoid asking questions",
|
|
15
16
|
});
|
|
16
17
|
|
|
17
|
-
this.option(
|
|
18
|
+
this.option("testing", {
|
|
18
19
|
type: Boolean,
|
|
19
20
|
required: false,
|
|
20
21
|
default: false,
|
|
21
|
-
|
|
22
|
+
description: "Has testing.",
|
|
22
23
|
});
|
|
23
24
|
|
|
24
|
-
this.option(
|
|
25
|
+
this.option("fromPob", {
|
|
25
26
|
type: Boolean,
|
|
26
27
|
required: false,
|
|
27
28
|
default: false,
|
|
28
29
|
});
|
|
29
30
|
|
|
30
|
-
this.option(
|
|
31
|
+
this.option("isApp", {
|
|
31
32
|
type: Boolean,
|
|
32
33
|
required: false,
|
|
33
34
|
default: false,
|
|
34
35
|
});
|
|
35
36
|
|
|
36
|
-
this.option(
|
|
37
|
+
this.option("isAppLibrary", {
|
|
37
38
|
type: Boolean,
|
|
38
39
|
required: false,
|
|
39
40
|
default: false,
|
|
40
41
|
});
|
|
41
42
|
|
|
42
|
-
this.option(
|
|
43
|
+
this.option("useAppConfig", {
|
|
43
44
|
type: Boolean,
|
|
44
45
|
required: false,
|
|
45
46
|
default: false,
|
|
46
47
|
});
|
|
47
48
|
|
|
48
|
-
this.option(
|
|
49
|
+
this.option("buildDirectory", {
|
|
49
50
|
type: String,
|
|
50
51
|
required: false,
|
|
51
|
-
default:
|
|
52
|
+
default: "dist",
|
|
52
53
|
});
|
|
53
54
|
|
|
54
|
-
this.option(
|
|
55
|
+
this.option("onlyLatestLTS", {
|
|
55
56
|
type: Boolean,
|
|
56
57
|
required: false,
|
|
57
58
|
default: false,
|
|
58
|
-
|
|
59
|
+
description: "only latest lts",
|
|
59
60
|
});
|
|
60
61
|
}
|
|
61
62
|
|
|
62
63
|
initializing() {
|
|
63
|
-
const pkg = this.fs.readJSON(this.destinationPath(
|
|
64
|
+
const pkg = this.fs.readJSON(this.destinationPath("package.json"));
|
|
64
65
|
|
|
65
|
-
if (
|
|
66
|
-
|
|
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 ===
|
|
71
|
-
String(env.version) === (this.options.onlyLatestLTS ?
|
|
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 ===
|
|
76
|
-
([
|
|
77
|
-
(this.options.onlyLatestLTS && String(env.version) ===
|
|
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:
|
|
82
|
-
version: this.options.onlyLatestLTS ?
|
|
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 !==
|
|
93
|
+
env.target !== "node" ||
|
|
89
94
|
env.version >= (this.options.onlyLatestLTS ? 20 : 18),
|
|
90
95
|
);
|
|
91
96
|
|
|
92
|
-
pkg.pob.babelEnvs
|
|
93
|
-
|
|
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(
|
|
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 =
|
|
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 ===
|
|
108
|
-
babelEnvs.some((env) => env.target ===
|
|
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 ===
|
|
122
|
+
.filter((env) => env.target === "node")
|
|
114
123
|
.map((env) => {
|
|
115
124
|
if (
|
|
116
|
-
env.version ===
|
|
117
|
-
env.version ===
|
|
118
|
-
(this.options.onlyLatestLTS && env.version ===
|
|
125
|
+
env.version === "14" ||
|
|
126
|
+
env.version === "16" ||
|
|
127
|
+
(this.options.onlyLatestLTS && env.version === "18")
|
|
119
128
|
) {
|
|
120
|
-
return this.options.onlyLatestLTS ?
|
|
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 ===
|
|
128
|
-
.map((env) => (env.version === undefined ?
|
|
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(
|
|
131
|
-
babelEnvs.some((env) => !env.formats || env.formats.includes(
|
|
132
|
-
?
|
|
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:
|
|
146
|
-
name:
|
|
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:
|
|
153
|
-
value:
|
|
161
|
+
name: "Node",
|
|
162
|
+
value: "node",
|
|
154
163
|
},
|
|
155
164
|
{
|
|
156
|
-
name:
|
|
157
|
-
value:
|
|
165
|
+
name: "Browser",
|
|
166
|
+
value: "browser",
|
|
158
167
|
},
|
|
159
168
|
],
|
|
160
169
|
},
|
|
161
170
|
|
|
162
171
|
{
|
|
163
|
-
type:
|
|
164
|
-
name:
|
|
165
|
-
message:
|
|
166
|
-
when: ({ targets = [] }) => targets.includes(
|
|
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:
|
|
172
|
-
value:
|
|
180
|
+
name: "20 (Active LTS)",
|
|
181
|
+
value: "20",
|
|
173
182
|
},
|
|
174
183
|
{
|
|
175
|
-
name:
|
|
176
|
-
value:
|
|
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:
|
|
202
|
-
name:
|
|
203
|
-
message:
|
|
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(
|
|
211
|
-
babelConfig.browserVersions = [
|
|
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:
|
|
217
|
-
name:
|
|
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:
|
|
237
|
+
target: "node",
|
|
229
238
|
version,
|
|
230
239
|
formats:
|
|
231
|
-
babelConfig.formats && babelConfig.formats.includes(
|
|
240
|
+
babelConfig.formats && babelConfig.formats.includes("cjs")
|
|
232
241
|
? // eslint-disable-next-line unicorn/no-nested-ternary
|
|
233
|
-
version ===
|
|
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 ===
|
|
248
|
+
version === "20" && this.options.onlyLatestLTS ? true : undefined,
|
|
240
249
|
})),
|
|
241
250
|
...(babelConfig.browserVersions || []).map((version) => ({
|
|
242
|
-
target:
|
|
243
|
-
version: version ===
|
|
251
|
+
target: "browser",
|
|
252
|
+
version: version === "supported" ? undefined : version,
|
|
244
253
|
formats:
|
|
245
|
-
babelConfig.formats && babelConfig.formats.includes(
|
|
254
|
+
babelConfig.formats && babelConfig.formats.includes("cjs")
|
|
246
255
|
? // eslint-disable-next-line unicorn/no-nested-ternary
|
|
247
|
-
version ===
|
|
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
|
-
|
|
257
|
-
|
|
258
|
-
delete pkg.pob.
|
|
259
|
-
|
|
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.
|
|
263
|
-
pkg.pob.
|
|
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(
|
|
284
|
+
this.fs.writeJSON(this.destinationPath("package.json"), pkg);
|
|
272
285
|
}
|
|
273
286
|
|
|
274
287
|
configuring() {
|
|
275
|
-
const pkg = this.fs.readJSON(this.destinationPath(
|
|
288
|
+
const pkg = this.fs.readJSON(this.destinationPath("package.json"));
|
|
276
289
|
this.entries = pkg.pob.entries;
|
|
277
|
-
this.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(
|
|
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 ===
|
|
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 ===
|
|
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[
|
|
319
|
-
[
|
|
334
|
+
useBabel || (pkg.peerDependencies && pkg.peerDependencies["@babel/core"]),
|
|
335
|
+
["@babel/core"],
|
|
320
336
|
);
|
|
321
|
-
packageUtils.addOrRemoveDevDependencies(pkg, useBabel, [
|
|
337
|
+
packageUtils.addOrRemoveDevDependencies(pkg, useBabel, ["pob-babel"]);
|
|
322
338
|
|
|
323
|
-
if (pkg.dependencies && pkg.dependencies[
|
|
339
|
+
if (pkg.dependencies && pkg.dependencies["pob-babel"]) {
|
|
324
340
|
// update pob-babel in alp-dev
|
|
325
|
-
packageUtils.addDependencies(pkg, [
|
|
341
|
+
packageUtils.addDependencies(pkg, ["pob-babel"], "^");
|
|
326
342
|
}
|
|
327
|
-
if (pkg.dependencies && pkg.dependencies[
|
|
343
|
+
if (pkg.dependencies && pkg.dependencies["@babel/runtime"]) {
|
|
328
344
|
// update pob-babel in alp-dev
|
|
329
|
-
packageUtils.addDependencies(pkg, [
|
|
345
|
+
packageUtils.addDependencies(pkg, ["@babel/runtime"], "^");
|
|
330
346
|
}
|
|
331
347
|
|
|
332
|
-
const isLibraryRollupPlugin = pkg.name.includes(
|
|
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?.[
|
|
338
|
-
[
|
|
353
|
+
(pkg.devDependencies?.["@babel/preset-react"] && isLibraryRollupPlugin),
|
|
354
|
+
["@babel/preset-react"],
|
|
339
355
|
);
|
|
340
356
|
|
|
341
357
|
packageUtils.removeDevDependencies(pkg, [
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
|
|
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 ===
|
|
367
|
+
(env) => env.target === "browser" && env.version === undefined,
|
|
352
368
|
) ||
|
|
353
|
-
(pkg.devDependencies?.[
|
|
354
|
-
[
|
|
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 ===
|
|
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 ?
|
|
384
|
+
(() => (this.options.onlyLatestLTS ? "20" : "18"))();
|
|
369
385
|
switch (String(minNodeVersion)) {
|
|
370
|
-
case
|
|
371
|
-
case
|
|
372
|
-
case
|
|
373
|
-
case
|
|
374
|
-
case
|
|
375
|
-
pkg.engines.node =
|
|
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
|
|
378
|
-
pkg.engines.node =
|
|
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[
|
|
385
|
-
pkg.dependencies[
|
|
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[
|
|
405
|
+
pkg.devDependencies["@types/node"] &&
|
|
390
406
|
!semver.satisfies(
|
|
391
|
-
pkg.devDependencies[
|
|
407
|
+
pkg.devDependencies["@types/node"],
|
|
392
408
|
`>=${minNodeVersion}.0.0`,
|
|
393
409
|
)
|
|
394
410
|
) {
|
|
395
|
-
pkg.devDependencies[
|
|
411
|
+
pkg.devDependencies["@types/node"] = `>=${minNodeVersion}.0.0`;
|
|
396
412
|
}
|
|
397
413
|
} else {
|
|
398
|
-
packageUtils.removeDependencies(pkg, [
|
|
399
|
-
packageUtils.removeDevDependencies(pkg, [
|
|
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 =
|
|
418
|
+
pkg.engines.node = ">=20.9.0";
|
|
403
419
|
} else {
|
|
404
|
-
pkg.engines.node =
|
|
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
|
-
|
|
418
|
-
|
|
419
|
-
|
|
420
|
-
|
|
421
|
-
|
|
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
|
-
|
|
435
|
-
|
|
436
|
-
|
|
437
|
-
|
|
438
|
-
|
|
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(
|
|
461
|
+
this.fs.writeJSON(this.destinationPath("package.json"), pkg);
|
|
446
462
|
}
|
|
447
463
|
|
|
448
464
|
writing() {
|
|
449
|
-
this.fs.delete(
|
|
465
|
+
this.fs.delete("types.js");
|
|
450
466
|
|
|
451
|
-
const pkg = this.fs.readJSON(this.destinationPath(
|
|
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 || [
|
|
470
|
+
const entries = pkg.pob.entries || ["index"];
|
|
455
471
|
|
|
456
472
|
/* pob-babel config */
|
|
457
473
|
|
|
458
|
-
packageUtils.removeDevDependencies(pkg, [
|
|
459
|
-
packageUtils.removeDependencies(pkg, [
|
|
474
|
+
packageUtils.removeDevDependencies(pkg, ["@rollup/plugin-run"]);
|
|
475
|
+
packageUtils.removeDependencies(pkg, ["alp-rollup-plugin-config"]);
|
|
460
476
|
|
|
461
|
-
this.fs.delete(
|
|
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(
|
|
467
|
-
this.destinationPath(
|
|
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(
|
|
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(
|
|
478
|
-
this.destinationPath(
|
|
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(
|
|
501
|
+
this.fs.delete("rollup.config.mjs");
|
|
486
502
|
}
|
|
487
503
|
|
|
488
504
|
/* jest babel config */
|
|
489
505
|
|
|
490
|
-
this.fs.delete(
|
|
491
|
-
this.fs.delete(
|
|
492
|
-
this.fs.delete(
|
|
493
|
-
if (this.fs.exists(this.destinationPath(
|
|
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(
|
|
496
|
-
this.destinationPath(
|
|
511
|
+
this.destinationPath("babel.config.js"),
|
|
512
|
+
this.destinationPath("babel.config.cjs"),
|
|
497
513
|
);
|
|
498
514
|
}
|
|
499
515
|
|
|
500
|
-
this.fs.writeJSON(this.destinationPath(
|
|
516
|
+
this.fs.writeJSON(this.destinationPath("package.json"), pkg);
|
|
501
517
|
}
|
|
502
518
|
}
|