yeoman-generator 5.8.0 → 5.10.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/lib/actions/package-json.js +26 -2
- package/lib/index.js +34 -16
- package/package.json +12 -1
|
@@ -1,4 +1,28 @@
|
|
|
1
1
|
'use strict';
|
|
2
|
+
const assert = require('assert');
|
|
3
|
+
const pacote = require('pacote');
|
|
4
|
+
|
|
5
|
+
const resolvePackage = async function (packageName, packageVersion) {
|
|
6
|
+
assert(packageName, 'Parameter packageName is required');
|
|
7
|
+
if (packageVersion) {
|
|
8
|
+
packageName = `${packageName}@${packageVersion}`;
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
const manifest = await pacote.manifest(packageName);
|
|
12
|
+
if (!manifest) {
|
|
13
|
+
return undefined;
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
const from = manifest._from;
|
|
17
|
+
const index = from.lastIndexOf('@');
|
|
18
|
+
if (index > 1) {
|
|
19
|
+
const resolvedVersion =
|
|
20
|
+
from.slice(index + 1, from.length) || manifest.version;
|
|
21
|
+
return [from.slice(0, Math.max(0, index)), resolvedVersion];
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
return [manifest.name, from || manifest.version];
|
|
25
|
+
};
|
|
2
26
|
|
|
3
27
|
module.exports = (cls) =>
|
|
4
28
|
/**
|
|
@@ -25,7 +49,7 @@ module.exports = (cls) =>
|
|
|
25
49
|
Object.entries(dependencies).map(([pkg, version]) =>
|
|
26
50
|
version
|
|
27
51
|
? Promise.resolve([pkg, version])
|
|
28
|
-
:
|
|
52
|
+
: resolvePackage(pkg, version)
|
|
29
53
|
)
|
|
30
54
|
);
|
|
31
55
|
return Object.fromEntries(
|
|
@@ -34,7 +58,7 @@ module.exports = (cls) =>
|
|
|
34
58
|
}
|
|
35
59
|
|
|
36
60
|
const entries = await Promise.all(
|
|
37
|
-
dependencies.map((dependency) =>
|
|
61
|
+
dependencies.map((dependency) => resolvePackage(dependency))
|
|
38
62
|
);
|
|
39
63
|
return Object.fromEntries(entries);
|
|
40
64
|
}
|
package/lib/index.js
CHANGED
|
@@ -190,6 +190,7 @@ class Generator extends Base {
|
|
|
190
190
|
default: false
|
|
191
191
|
});
|
|
192
192
|
|
|
193
|
+
/** @type {import('@yeoman/types').BaseEnvironment} */
|
|
193
194
|
this.env = this.options.env;
|
|
194
195
|
|
|
195
196
|
this.resolved = this.options.resolved || __filename;
|
|
@@ -250,13 +251,7 @@ class Generator extends Base {
|
|
|
250
251
|
}
|
|
251
252
|
|
|
252
253
|
// Ensure the environment support features this yeoman-generator version require.
|
|
253
|
-
if (
|
|
254
|
-
!this.env ||
|
|
255
|
-
!this.env.adapter ||
|
|
256
|
-
!this.env.runLoop ||
|
|
257
|
-
!this.env.sharedFs ||
|
|
258
|
-
!this.env.fs
|
|
259
|
-
) {
|
|
254
|
+
if (!this.env || !this.env.adapter || !this.env.sharedFs) {
|
|
260
255
|
throw new Error(
|
|
261
256
|
"Current environment doesn't provides some necessary feature this generator needs."
|
|
262
257
|
);
|
|
@@ -309,6 +304,10 @@ class Generator extends Base {
|
|
|
309
304
|
}
|
|
310
305
|
|
|
311
306
|
this.checkEnvironmentVersion('3.2.0', true);
|
|
307
|
+
|
|
308
|
+
if (this.env.getVersion) {
|
|
309
|
+
this.yeomanApi = semver.gte(this.env.getVersion(), '3.18.3');
|
|
310
|
+
}
|
|
312
311
|
}
|
|
313
312
|
|
|
314
313
|
/**
|
|
@@ -394,14 +393,19 @@ class Generator extends Base {
|
|
|
394
393
|
debug(`Registering custom queue ${customQueue.queueName}`);
|
|
395
394
|
this._queues[customQueue.priorityName] = customQueue;
|
|
396
395
|
|
|
397
|
-
if (this.env.runLoop.queueNames.includes(customQueue.queueName)) {
|
|
398
|
-
continue;
|
|
399
|
-
}
|
|
400
|
-
|
|
401
396
|
const beforeQueue = customQueue.before
|
|
402
397
|
? this._queues[customQueue.before].queueName
|
|
403
398
|
: undefined;
|
|
404
|
-
|
|
399
|
+
|
|
400
|
+
if (this.yeomanApi) {
|
|
401
|
+
this.env.addPriority(customQueue.queueName, beforeQueue);
|
|
402
|
+
} else {
|
|
403
|
+
if (this.env.runLoop.queueNames.includes(customQueue.queueName)) {
|
|
404
|
+
continue;
|
|
405
|
+
}
|
|
406
|
+
|
|
407
|
+
this.env.runLoop.addSubQueue(customQueue.queueName, beforeQueue);
|
|
408
|
+
}
|
|
405
409
|
}
|
|
406
410
|
}
|
|
407
411
|
|
|
@@ -1230,11 +1234,13 @@ class Generator extends Base {
|
|
|
1230
1234
|
);
|
|
1231
1235
|
this.queueOwnTasks({auto: true});
|
|
1232
1236
|
|
|
1237
|
+
const queueParameter = this.yeomanApi ? {schedule: false} : false;
|
|
1238
|
+
|
|
1233
1239
|
if (this._composedWith.some((generator) => generator.then)) {
|
|
1234
1240
|
return Promise.all(this._composedWith).then(async (generators) => {
|
|
1235
1241
|
for (const generator of generators) {
|
|
1236
1242
|
// eslint-disable-next-line no-await-in-loop
|
|
1237
|
-
await this.env.queueGenerator(await generator,
|
|
1243
|
+
await this.env.queueGenerator(await generator, queueParameter);
|
|
1238
1244
|
}
|
|
1239
1245
|
});
|
|
1240
1246
|
}
|
|
@@ -1242,9 +1248,9 @@ class Generator extends Base {
|
|
|
1242
1248
|
let promise;
|
|
1243
1249
|
for (const generator of this._composedWith) {
|
|
1244
1250
|
if (promise) {
|
|
1245
|
-
promise.then(() => this.env.queueGenerator(generator,
|
|
1251
|
+
promise.then(() => this.env.queueGenerator(generator, queueParameter));
|
|
1246
1252
|
} else {
|
|
1247
|
-
const maybePromise = this.env.queueGenerator(generator,
|
|
1253
|
+
const maybePromise = this.env.queueGenerator(generator, queueParameter);
|
|
1248
1254
|
if (maybePromise.then) {
|
|
1249
1255
|
promise = maybePromise;
|
|
1250
1256
|
}
|
|
@@ -1307,6 +1313,13 @@ class Generator extends Base {
|
|
|
1307
1313
|
|
|
1308
1314
|
Generator.namespace = this.env.namespace(path);
|
|
1309
1315
|
|
|
1316
|
+
if (this.yeomanApi) {
|
|
1317
|
+
return this.env.instantiate(Generator, {
|
|
1318
|
+
generatorArgs: args,
|
|
1319
|
+
generatorOptions: options
|
|
1320
|
+
});
|
|
1321
|
+
}
|
|
1322
|
+
|
|
1310
1323
|
return this.env.instantiate(Generator, args, options);
|
|
1311
1324
|
};
|
|
1312
1325
|
|
|
@@ -1321,7 +1334,12 @@ class Generator extends Base {
|
|
|
1321
1334
|
|
|
1322
1335
|
instantiatedGenerator = instantiate(Generator, generator);
|
|
1323
1336
|
} catch {
|
|
1324
|
-
instantiatedGenerator = this.
|
|
1337
|
+
instantiatedGenerator = this.yeomanApi
|
|
1338
|
+
? this.env.create(generator, {
|
|
1339
|
+
generatorArgs: args,
|
|
1340
|
+
generatorOptions: options
|
|
1341
|
+
})
|
|
1342
|
+
: this.env.create(generator, args, options);
|
|
1325
1343
|
}
|
|
1326
1344
|
} else {
|
|
1327
1345
|
const {Generator, path} = generator;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "yeoman-generator",
|
|
3
|
-
"version": "5.
|
|
3
|
+
"version": "5.10.0",
|
|
4
4
|
"description": "Rails-inspired generator system that provides scaffolding for your apps",
|
|
5
5
|
"homepage": "http://yeoman.io",
|
|
6
6
|
"author": "Yeoman",
|
|
@@ -25,6 +25,7 @@
|
|
|
25
25
|
"doc_path": "../yeoman-generator-doc/"
|
|
26
26
|
},
|
|
27
27
|
"devDependencies": {
|
|
28
|
+
"@yeoman/types": "1.0.1",
|
|
28
29
|
"coveralls": "^3.0.3",
|
|
29
30
|
"inquirer": "^8.2.4",
|
|
30
31
|
"jsdoc": "^3.6.7",
|
|
@@ -68,6 +69,7 @@
|
|
|
68
69
|
"lodash": "^4.17.11",
|
|
69
70
|
"mem-fs-editor": "^9.0.0",
|
|
70
71
|
"minimist": "^1.2.5",
|
|
72
|
+
"pacote": "^15.2.0",
|
|
71
73
|
"read-pkg-up": "^7.0.1",
|
|
72
74
|
"run-async": "^2.0.0",
|
|
73
75
|
"semver": "^7.2.1",
|
|
@@ -75,6 +77,15 @@
|
|
|
75
77
|
"sort-keys": "^4.2.0",
|
|
76
78
|
"text-table": "^0.2.0"
|
|
77
79
|
},
|
|
80
|
+
"overrides": {
|
|
81
|
+
"@yeoman/types": {
|
|
82
|
+
"mem-fs": "^2.0.0",
|
|
83
|
+
"mem-fs-editor": "^9.0.0"
|
|
84
|
+
}
|
|
85
|
+
},
|
|
86
|
+
"acceptDependencies": {
|
|
87
|
+
"yeoman-environment": "^4.0.0"
|
|
88
|
+
},
|
|
78
89
|
"peerDependencies": {
|
|
79
90
|
"yeoman-environment": "^3.2.0"
|
|
80
91
|
},
|