@backstage/cli 0.18.0 → 0.18.1-next.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 +7 -0
- package/dist/cjs/{Lockfile-48dc675e.cjs.js → Lockfile-72b7072e.cjs.js} +25 -9
- package/dist/cjs/{PackageGraph-1d7b086a.cjs.js → PackageGraph-6e1d4bd4.cjs.js} +17 -9
- package/dist/cjs/{build-52ba70a2.cjs.js → build-3b11f7c9.cjs.js} +26 -15
- package/dist/cjs/{buildBackend-55985c84.cjs.js → buildBackend-87996ad4.cjs.js} +61 -36
- package/dist/cjs/{buildWorkspace-d663903d.cjs.js → buildWorkspace-425726da.cjs.js} +7 -7
- package/dist/cjs/{bump-1a3769e9.cjs.js → bump-f3c6b3cd.cjs.js} +88 -33
- package/dist/cjs/{clean-9a8c294a.cjs.js → clean-798512b5.cjs.js} +2 -2
- package/dist/cjs/{config-de1bf46a.cjs.js → config-4a59f918.cjs.js} +15 -11
- package/dist/cjs/{create-b0ca2add.cjs.js → create-a7269bb5.cjs.js} +80 -32
- package/dist/cjs/{createDistWorkspace-fc94c796.cjs.js → createDistWorkspace-cb9a9a84.cjs.js} +137 -65
- package/dist/cjs/{createPlugin-4d7e1b01.cjs.js → createPlugin-fca2c26e.cjs.js} +69 -30
- package/dist/cjs/{diff-a561bee3.cjs.js → diff-3dec490d.cjs.js} +68 -16
- package/dist/cjs/{docs-bd70b38e.cjs.js → docs-e60d4fe7.cjs.js} +9 -5
- package/dist/cjs/{fix-47eb8dc4.cjs.js → fix-b60a5395.cjs.js} +17 -7
- package/dist/cjs/{index-27d57881.cjs.js → index-131467e2.cjs.js} +10 -10
- package/dist/cjs/{index-7e13cc9d.cjs.js → index-50703ee1.cjs.js} +151 -50
- package/dist/cjs/{index-4f4a8498.cjs.js → index-71d143d5.cjs.js} +57 -38
- package/dist/cjs/{index-bb24147b.cjs.js → index-7efbd23e.cjs.js} +39 -12
- package/dist/cjs/{info-29f0ee36.cjs.js → info-04610119.cjs.js} +20 -6
- package/dist/cjs/{install-fea0e3f5.cjs.js → install-589f1c25.cjs.js} +44 -17
- package/dist/cjs/{lint-81a75364.cjs.js → lint-41010f96.cjs.js} +37 -11
- package/dist/cjs/{lint-1711bbbb.cjs.js → lint-6fcb9a70.cjs.js} +5 -3
- package/dist/cjs/{lint-0db8937c.cjs.js → lint-7f6b0d33.cjs.js} +4 -4
- package/dist/cjs/{list-deprecations-cea8fad3.cjs.js → list-deprecations-8aee2123.cjs.js} +3 -3
- package/dist/cjs/{pack-8ab429c0.cjs.js → pack-91881c2f.cjs.js} +17 -11
- package/dist/cjs/packageLintConfigs-f9e5fcc6.cjs.js +83 -0
- package/dist/cjs/packageRole-16eb6c89.cjs.js +59 -0
- package/dist/cjs/{packageRoles-a310f84c.cjs.js → packageRoles-96528891.cjs.js} +5 -3
- package/dist/cjs/packageScripts-eb2443c2.cjs.js +98 -0
- package/dist/cjs/{packages-ea5c38ec.cjs.js → packages-1b40c101.cjs.js} +17 -12
- package/dist/cjs/parallel-a8f6219c.cjs.js +187 -0
- package/dist/cjs/{paths-d98c9d0c.cjs.js → paths-b34f135a.cjs.js} +100 -55
- package/dist/cjs/{print-4cbe70e7.cjs.js → print-e99d7c2e.cjs.js} +4 -4
- package/dist/cjs/{run-5e05ba2c.cjs.js → run-722b1384.cjs.js} +2 -2
- package/dist/cjs/{schema-2c842cbe.cjs.js → schema-c636e913.cjs.js} +9 -5
- package/dist/cjs/{tasks-b054c9ce.cjs.js → tasks-4776baa6.cjs.js} +29 -12
- package/dist/cjs/{test-b5969f53.cjs.js → test-76539f57.cjs.js} +3 -3
- package/dist/cjs/{validate-8a03d402.cjs.js → validate-f9273594.cjs.js} +4 -4
- package/dist/index.cjs.js +1 -1
- package/package.json +12 -12
- package/dist/cjs/packageLintConfigs-77b71b79.cjs.js +0 -74
- package/dist/cjs/packageRole-d1e7c7d6.cjs.js +0 -53
- package/dist/cjs/packageScripts-6731503e.cjs.js +0 -96
- package/dist/cjs/parallel-8286d3fa.cjs.js +0 -171
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
3
|
var fs = require('fs-extra');
|
|
4
|
-
var index = require('./index-
|
|
4
|
+
var index = require('./index-50703ee1.cjs.js');
|
|
5
5
|
require('commander');
|
|
6
6
|
require('chalk');
|
|
7
7
|
require('semver');
|
|
@@ -19,4 +19,4 @@ async function clean() {
|
|
|
19
19
|
}
|
|
20
20
|
|
|
21
21
|
exports["default"] = clean;
|
|
22
|
-
//# sourceMappingURL=clean-
|
|
22
|
+
//# sourceMappingURL=clean-798512b5.cjs.js.map
|
|
@@ -2,9 +2,9 @@
|
|
|
2
2
|
|
|
3
3
|
var configLoader = require('@backstage/config-loader');
|
|
4
4
|
var config = require('@backstage/config');
|
|
5
|
-
var index = require('./index-
|
|
5
|
+
var index = require('./index-50703ee1.cjs.js');
|
|
6
6
|
var getPackages = require('@manypkg/get-packages');
|
|
7
|
-
var PackageGraph = require('./PackageGraph-
|
|
7
|
+
var PackageGraph = require('./PackageGraph-6e1d4bd4.cjs.js');
|
|
8
8
|
|
|
9
9
|
function isValidUrl(url) {
|
|
10
10
|
try {
|
|
@@ -27,12 +27,14 @@ async function loadCliConfig(options) {
|
|
|
27
27
|
if (options.fromPackage) {
|
|
28
28
|
if (packages.length) {
|
|
29
29
|
const graph = PackageGraph.PackageGraph.fromPackages(packages);
|
|
30
|
-
localPackageNames = Array.from(
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
30
|
+
localPackageNames = Array.from(
|
|
31
|
+
graph.collectPackageNames([options.fromPackage], (node) => {
|
|
32
|
+
if (node.name === "@backstage/cli") {
|
|
33
|
+
return void 0;
|
|
34
|
+
}
|
|
35
|
+
return node.localDependencies.keys();
|
|
36
|
+
})
|
|
37
|
+
);
|
|
36
38
|
} else {
|
|
37
39
|
localPackageNames = [options.fromPackage];
|
|
38
40
|
}
|
|
@@ -48,8 +50,10 @@ async function loadCliConfig(options) {
|
|
|
48
50
|
configRoot: index.paths.targetRoot,
|
|
49
51
|
configTargets
|
|
50
52
|
});
|
|
51
|
-
process.stderr.write(
|
|
52
|
-
`)
|
|
53
|
+
process.stderr.write(
|
|
54
|
+
`Loaded config from ${appConfigs.map((c) => c.context).join(", ")}
|
|
55
|
+
`
|
|
56
|
+
);
|
|
53
57
|
try {
|
|
54
58
|
const frontendAppConfigs = schema.process(appConfigs, {
|
|
55
59
|
visibility: options.fullVisibility ? ["frontend", "backend", "secret"] : ["frontend"],
|
|
@@ -76,4 +80,4 @@ async function loadCliConfig(options) {
|
|
|
76
80
|
}
|
|
77
81
|
|
|
78
82
|
exports.loadCliConfig = loadCliConfig;
|
|
79
|
-
//# sourceMappingURL=config-
|
|
83
|
+
//# sourceMappingURL=config-4a59f918.cjs.js.map
|
|
@@ -7,12 +7,12 @@ var chalk = require('chalk');
|
|
|
7
7
|
var inquirer = require('inquirer');
|
|
8
8
|
var camelCase = require('lodash/camelCase');
|
|
9
9
|
var upperFirst = require('lodash/upperFirst');
|
|
10
|
-
var index = require('./index-
|
|
11
|
-
var tasks = require('./tasks-
|
|
12
|
-
var Lockfile = require('./Lockfile-
|
|
10
|
+
var index = require('./index-50703ee1.cjs.js');
|
|
11
|
+
var tasks = require('./tasks-4776baa6.cjs.js');
|
|
12
|
+
var Lockfile = require('./Lockfile-72b7072e.cjs.js');
|
|
13
13
|
require('minimatch');
|
|
14
14
|
require('@manypkg/get-packages');
|
|
15
|
-
require('./run-
|
|
15
|
+
require('./run-722b1384.cjs.js');
|
|
16
16
|
var partition = require('lodash/partition');
|
|
17
17
|
var errors = require('@backstage/errors');
|
|
18
18
|
require('commander');
|
|
@@ -85,14 +85,23 @@ async function executePluginPackageTemplate(ctx, options) {
|
|
|
85
85
|
const shortPluginDir = path.relative(index.paths.targetRoot, targetDir);
|
|
86
86
|
await tasks.Task.forItem("availability", shortPluginDir, async () => {
|
|
87
87
|
if (await fs__default["default"].pathExists(targetDir)) {
|
|
88
|
-
throw new Error(
|
|
88
|
+
throw new Error(
|
|
89
|
+
`A package with the same plugin ID already exists at ${chalk__default["default"].cyan(
|
|
90
|
+
shortPluginDir
|
|
91
|
+
)}. Please try again with a different ID.`
|
|
92
|
+
);
|
|
89
93
|
}
|
|
90
94
|
});
|
|
91
95
|
const tempDir = await tasks.Task.forItem("creating", "temp dir", async () => {
|
|
92
96
|
return await ctx.createTemporaryDirectory("backstage-create");
|
|
93
97
|
});
|
|
94
98
|
tasks.Task.section("Executing Template");
|
|
95
|
-
await tasks.templatingTask(
|
|
99
|
+
await tasks.templatingTask(
|
|
100
|
+
index.paths.resolveOwn("templates", options.templateName),
|
|
101
|
+
tempDir,
|
|
102
|
+
options.values,
|
|
103
|
+
index.createPackageVersionProvider(lockfile)
|
|
104
|
+
);
|
|
96
105
|
const pkgJsonPath = path.resolve(tempDir, "package.json");
|
|
97
106
|
if (await fs__default["default"].pathExists(pkgJsonPath)) {
|
|
98
107
|
const pkgJson = await fs__default["default"].readJson(pkgJsonPath);
|
|
@@ -101,7 +110,9 @@ async function executePluginPackageTemplate(ctx, options) {
|
|
|
101
110
|
tasks.Task.section("Installing");
|
|
102
111
|
await tasks.Task.forItem("moving", shortPluginDir, async () => {
|
|
103
112
|
await fs__default["default"].move(tempDir, targetDir).catch((error) => {
|
|
104
|
-
throw new Error(
|
|
113
|
+
throw new Error(
|
|
114
|
+
`Failed to move package from ${tempDir} to ${targetDir}, ${error.message}`
|
|
115
|
+
);
|
|
105
116
|
});
|
|
106
117
|
});
|
|
107
118
|
ctx.markAsModified();
|
|
@@ -136,22 +147,31 @@ const frontendPlugin = createFactory({
|
|
|
136
147
|
});
|
|
137
148
|
if (await fs__default["default"].pathExists(index.paths.resolveTargetRoot("packages/app"))) {
|
|
138
149
|
await tasks.Task.forItem("app", "adding dependency", async () => {
|
|
139
|
-
await tasks.addPackageDependency(
|
|
140
|
-
|
|
141
|
-
|
|
150
|
+
await tasks.addPackageDependency(
|
|
151
|
+
index.paths.resolveTargetRoot("packages/app/package.json"),
|
|
152
|
+
{
|
|
153
|
+
dependencies: {
|
|
154
|
+
[name]: `^${ctx.defaultVersion}`
|
|
155
|
+
}
|
|
142
156
|
}
|
|
143
|
-
|
|
157
|
+
);
|
|
144
158
|
});
|
|
145
159
|
await tasks.Task.forItem("app", "adding import", async () => {
|
|
146
160
|
var _a;
|
|
147
|
-
const pluginsFilePath = index.paths.resolveTargetRoot(
|
|
161
|
+
const pluginsFilePath = index.paths.resolveTargetRoot(
|
|
162
|
+
"packages/app/src/App.tsx"
|
|
163
|
+
);
|
|
148
164
|
if (!await fs__default["default"].pathExists(pluginsFilePath)) {
|
|
149
165
|
return;
|
|
150
166
|
}
|
|
151
167
|
const content = await fs__default["default"].readFile(pluginsFilePath, "utf8");
|
|
152
168
|
const revLines = content.split("\n").reverse();
|
|
153
|
-
const lastImportIndex = revLines.findIndex(
|
|
154
|
-
|
|
169
|
+
const lastImportIndex = revLines.findIndex(
|
|
170
|
+
(line) => line.match(/ from ("|').*("|')/)
|
|
171
|
+
);
|
|
172
|
+
const lastRouteIndex = revLines.findIndex(
|
|
173
|
+
(line) => line.match(/<\/FlatRoutes/)
|
|
174
|
+
);
|
|
155
175
|
if (lastImportIndex !== -1 && lastRouteIndex !== -1) {
|
|
156
176
|
const importLine = `import { ${extensionName} } from '${name}';`;
|
|
157
177
|
if (!content.includes(importLine)) {
|
|
@@ -205,11 +225,14 @@ const backendPlugin = createFactory({
|
|
|
205
225
|
});
|
|
206
226
|
if (await fs__default["default"].pathExists(index.paths.resolveTargetRoot("packages/backend"))) {
|
|
207
227
|
await tasks.Task.forItem("backend", "adding dependency", async () => {
|
|
208
|
-
await tasks.addPackageDependency(
|
|
209
|
-
|
|
210
|
-
|
|
228
|
+
await tasks.addPackageDependency(
|
|
229
|
+
index.paths.resolveTargetRoot("packages/backend/package.json"),
|
|
230
|
+
{
|
|
231
|
+
dependencies: {
|
|
232
|
+
[name]: `^${ctx.defaultVersion}`
|
|
233
|
+
}
|
|
211
234
|
}
|
|
212
|
-
|
|
235
|
+
);
|
|
213
236
|
});
|
|
214
237
|
}
|
|
215
238
|
if (options.owner) {
|
|
@@ -376,7 +399,10 @@ class FactoryRegistry {
|
|
|
376
399
|
};
|
|
377
400
|
}
|
|
378
401
|
if (factory.optionsPrompts) {
|
|
379
|
-
const [hasAnswers, needsAnswers] = partition__default["default"](
|
|
402
|
+
const [hasAnswers, needsAnswers] = partition__default["default"](
|
|
403
|
+
factory.optionsPrompts,
|
|
404
|
+
(option) => option.name in currentOptions
|
|
405
|
+
);
|
|
380
406
|
for (const option of hasAnswers) {
|
|
381
407
|
const value = provided[option.name];
|
|
382
408
|
if (option.validate) {
|
|
@@ -386,15 +412,22 @@ class FactoryRegistry {
|
|
|
386
412
|
}
|
|
387
413
|
}
|
|
388
414
|
}
|
|
389
|
-
currentOptions = await inquirer__default["default"].prompt(
|
|
390
|
-
|
|
391
|
-
|
|
392
|
-
|
|
415
|
+
currentOptions = await inquirer__default["default"].prompt(
|
|
416
|
+
needsAnswers.map(
|
|
417
|
+
(option) => applyPromptMessageTransforms(option, {
|
|
418
|
+
message: chalk__default["default"].blue,
|
|
419
|
+
error: chalk__default["default"].red
|
|
420
|
+
})
|
|
421
|
+
),
|
|
422
|
+
currentOptions
|
|
423
|
+
);
|
|
393
424
|
}
|
|
394
425
|
return currentOptions;
|
|
395
426
|
}
|
|
396
427
|
}
|
|
397
|
-
FactoryRegistry.factoryMap = new Map(
|
|
428
|
+
FactoryRegistry.factoryMap = new Map(
|
|
429
|
+
Object.values(factories).map((factory) => [factory.name, factory])
|
|
430
|
+
);
|
|
398
431
|
|
|
399
432
|
function parseOptions(optionStrings) {
|
|
400
433
|
const options = {};
|
|
@@ -402,7 +435,9 @@ function parseOptions(optionStrings) {
|
|
|
402
435
|
const [key] = str.split("=", 1);
|
|
403
436
|
const value = str.slice(key.length + 1);
|
|
404
437
|
if (!key || str[key.length] !== "=") {
|
|
405
|
-
throw new Error(
|
|
438
|
+
throw new Error(
|
|
439
|
+
`Invalid option '${str}', must be of the format <key>=<value>`
|
|
440
|
+
);
|
|
406
441
|
}
|
|
407
442
|
options[key] = value;
|
|
408
443
|
}
|
|
@@ -412,10 +447,15 @@ var create = async (opts) => {
|
|
|
412
447
|
var _a;
|
|
413
448
|
const factory = await FactoryRegistry.interactiveSelect(opts.select);
|
|
414
449
|
const providedOptions = parseOptions(opts.option);
|
|
415
|
-
const options = await FactoryRegistry.populateOptions(
|
|
450
|
+
const options = await FactoryRegistry.populateOptions(
|
|
451
|
+
factory,
|
|
452
|
+
providedOptions
|
|
453
|
+
);
|
|
416
454
|
let isMonoRepo = false;
|
|
417
455
|
try {
|
|
418
|
-
const rootPackageJson = await fs__default["default"].readJson(
|
|
456
|
+
const rootPackageJson = await fs__default["default"].readJson(
|
|
457
|
+
index.paths.resolveTargetRoot("package.json")
|
|
458
|
+
);
|
|
419
459
|
if (rootPackageJson.workspaces) {
|
|
420
460
|
isMonoRepo = true;
|
|
421
461
|
}
|
|
@@ -427,7 +467,9 @@ var create = async (opts) => {
|
|
|
427
467
|
}
|
|
428
468
|
let defaultVersion = "0.1.0";
|
|
429
469
|
try {
|
|
430
|
-
const rootLernaJson = await fs__default["default"].readJson(
|
|
470
|
+
const rootLernaJson = await fs__default["default"].readJson(
|
|
471
|
+
index.paths.resolveTargetRoot("lerna.json")
|
|
472
|
+
);
|
|
431
473
|
if (rootLernaJson.version) {
|
|
432
474
|
defaultVersion = rootLernaJson.version;
|
|
433
475
|
}
|
|
@@ -465,8 +507,12 @@ var create = async (opts) => {
|
|
|
465
507
|
if (modified) {
|
|
466
508
|
tasks.Task.log("It seems that something went wrong in the creation process \u{1F914}");
|
|
467
509
|
tasks.Task.log();
|
|
468
|
-
tasks.Task.log(
|
|
469
|
-
|
|
510
|
+
tasks.Task.log(
|
|
511
|
+
"We have left the changes that were made intact in case you want to"
|
|
512
|
+
);
|
|
513
|
+
tasks.Task.log(
|
|
514
|
+
"continue manually, but you can also revert the changes and try again."
|
|
515
|
+
);
|
|
470
516
|
tasks.Task.error(`\u{1F525} Failed to create ${factory.name}!`);
|
|
471
517
|
}
|
|
472
518
|
} finally {
|
|
@@ -474,11 +520,13 @@ var create = async (opts) => {
|
|
|
474
520
|
try {
|
|
475
521
|
await fs__default["default"].remove(dir);
|
|
476
522
|
} catch (error) {
|
|
477
|
-
console.error(
|
|
523
|
+
console.error(
|
|
524
|
+
`Failed to remove temporary directory '${dir}', ${error}`
|
|
525
|
+
);
|
|
478
526
|
}
|
|
479
527
|
}
|
|
480
528
|
}
|
|
481
529
|
};
|
|
482
530
|
|
|
483
531
|
exports["default"] = create;
|
|
484
|
-
//# sourceMappingURL=create-
|
|
532
|
+
//# sourceMappingURL=create-a7269bb5.cjs.js.map
|
package/dist/cjs/{createDistWorkspace-fc94c796.cjs.js → createDistWorkspace-cb9a9a84.cjs.js}
RENAMED
|
@@ -6,9 +6,9 @@ var path = require('path');
|
|
|
6
6
|
var os = require('os');
|
|
7
7
|
var tar = require('tar');
|
|
8
8
|
var partition = require('lodash/partition');
|
|
9
|
-
var index = require('./index-
|
|
10
|
-
var run = require('./run-
|
|
11
|
-
var PackageGraph = require('./PackageGraph-
|
|
9
|
+
var index = require('./index-50703ee1.cjs.js');
|
|
10
|
+
var run = require('./run-722b1384.cjs.js');
|
|
11
|
+
var PackageGraph = require('./PackageGraph-6e1d4bd4.cjs.js');
|
|
12
12
|
var rollup = require('rollup');
|
|
13
13
|
var commonjs = require('@rollup/plugin-commonjs');
|
|
14
14
|
var resolve = require('@rollup/plugin-node-resolve');
|
|
@@ -20,8 +20,8 @@ var json = require('@rollup/plugin-json');
|
|
|
20
20
|
var yaml = require('@rollup/plugin-yaml');
|
|
21
21
|
var rollupPluginutils = require('rollup-pluginutils');
|
|
22
22
|
var svgrTemplate = require('./svgrTemplate-550efce6.cjs.js');
|
|
23
|
-
var parallel = require('./parallel-
|
|
24
|
-
var packageRoles = require('./packageRoles-
|
|
23
|
+
var parallel = require('./parallel-a8f6219c.cjs.js');
|
|
24
|
+
var packageRoles = require('./packageRoles-96528891.cjs.js');
|
|
25
25
|
var npmPackList = require('npm-packlist');
|
|
26
26
|
|
|
27
27
|
function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
|
|
@@ -64,12 +64,14 @@ function forwardFileImports(options) {
|
|
|
64
64
|
}
|
|
65
65
|
generatedFor.add(dir);
|
|
66
66
|
const srcRoot = path.dirname(chunk.facadeModuleId);
|
|
67
|
-
await Promise.all(
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
67
|
+
await Promise.all(
|
|
68
|
+
Array.from(exportedFiles).map(async (exportedFile) => {
|
|
69
|
+
const outputPath = path.relative(srcRoot, exportedFile);
|
|
70
|
+
const targetFile = path.resolve(dir, outputPath);
|
|
71
|
+
await fs__default["default"].ensureDir(path.dirname(targetFile));
|
|
72
|
+
await fs__default["default"].copyFile(exportedFile, targetFile);
|
|
73
|
+
})
|
|
74
|
+
);
|
|
73
75
|
return;
|
|
74
76
|
}
|
|
75
77
|
},
|
|
@@ -194,11 +196,19 @@ async function makeRollupConfigs(options) {
|
|
|
194
196
|
});
|
|
195
197
|
}
|
|
196
198
|
if (options.outputs.has(Output.types) && !options.useApiExtractor) {
|
|
197
|
-
const typesInput = index.paths.resolveTargetRoot(
|
|
199
|
+
const typesInput = index.paths.resolveTargetRoot(
|
|
200
|
+
"dist-types",
|
|
201
|
+
path.relative(index.paths.targetRoot, targetDir),
|
|
202
|
+
"src/index.d.ts"
|
|
203
|
+
);
|
|
198
204
|
const declarationsExist = await fs__default["default"].pathExists(typesInput);
|
|
199
205
|
if (!declarationsExist) {
|
|
200
206
|
const path$1 = path.relative(targetDir, typesInput);
|
|
201
|
-
throw new Error(
|
|
207
|
+
throw new Error(
|
|
208
|
+
`No declaration files found at ${path$1}, be sure to run ${chalk__default["default"].bgRed.white(
|
|
209
|
+
"yarn tsc"
|
|
210
|
+
)} to generate .d.ts files before packaging`
|
|
211
|
+
);
|
|
202
212
|
}
|
|
203
213
|
configs.push({
|
|
204
214
|
input: typesInput,
|
|
@@ -227,7 +237,9 @@ async function buildTypeDefinitionsWorker(workerData, sendMessage) {
|
|
|
227
237
|
try {
|
|
228
238
|
require("@microsoft/api-extractor");
|
|
229
239
|
} catch (error) {
|
|
230
|
-
throw new Error(
|
|
240
|
+
throw new Error(
|
|
241
|
+
"Failed to resolve @microsoft/api-extractor, it must best installed as a dependency of your project in order to use experimental type builds"
|
|
242
|
+
);
|
|
231
243
|
}
|
|
232
244
|
const { dirname } = require("path");
|
|
233
245
|
const { entryPoints, workerConfigs, typescriptCompilerFolder } = workerData;
|
|
@@ -263,22 +275,36 @@ async function buildTypeDefinitionsWorker(workerData, sendMessage) {
|
|
|
263
275
|
}
|
|
264
276
|
});
|
|
265
277
|
if (!extractorResult.succeeded) {
|
|
266
|
-
throw new Error(
|
|
278
|
+
throw new Error(
|
|
279
|
+
`Type definition build completed with ${extractorResult.errorCount} errors and ${extractorResult.warningCount} warnings`
|
|
280
|
+
);
|
|
267
281
|
}
|
|
268
282
|
}
|
|
269
283
|
}
|
|
270
284
|
|
|
271
285
|
const ignoredMessages = /* @__PURE__ */ new Set(["tsdoc-undefined-tag", "ae-forgotten-export"]);
|
|
272
286
|
async function buildTypeDefinitions(targetDirs = [index.paths.targetDir]) {
|
|
273
|
-
const packageDirs = targetDirs.map(
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
287
|
+
const packageDirs = targetDirs.map(
|
|
288
|
+
(dir) => path.relative(index.paths.targetRoot, dir)
|
|
289
|
+
);
|
|
290
|
+
const entryPoints = await Promise.all(
|
|
291
|
+
packageDirs.map(async (dir) => {
|
|
292
|
+
const entryPoint = index.paths.resolveTargetRoot(
|
|
293
|
+
"dist-types",
|
|
294
|
+
dir,
|
|
295
|
+
"src/index.d.ts"
|
|
296
|
+
);
|
|
297
|
+
const declarationsExist = await fs__default["default"].pathExists(entryPoint);
|
|
298
|
+
if (!declarationsExist) {
|
|
299
|
+
throw new Error(
|
|
300
|
+
`No declaration files found at ${entryPoint}, be sure to run ${chalk__default["default"].bgRed.white(
|
|
301
|
+
"yarn tsc"
|
|
302
|
+
)} to generate .d.ts files before packaging`
|
|
303
|
+
);
|
|
304
|
+
}
|
|
305
|
+
return entryPoint;
|
|
306
|
+
})
|
|
307
|
+
);
|
|
282
308
|
const workerConfigs = packageDirs.map((packageDir) => {
|
|
283
309
|
const targetDir = index.paths.resolveTargetRoot(packageDir);
|
|
284
310
|
const targetTypesDir = index.paths.resolveTargetRoot("dist-types", packageDir);
|
|
@@ -407,9 +433,15 @@ async function rollupBuild(config) {
|
|
|
407
433
|
}
|
|
408
434
|
const buildPackage = async (options) => {
|
|
409
435
|
try {
|
|
410
|
-
const { resolutions } = await fs__default["default"].readJson(
|
|
436
|
+
const { resolutions } = await fs__default["default"].readJson(
|
|
437
|
+
index.paths.resolveTargetRoot("package.json")
|
|
438
|
+
);
|
|
411
439
|
if (resolutions == null ? void 0 : resolutions.esbuild) {
|
|
412
|
-
console.warn(
|
|
440
|
+
console.warn(
|
|
441
|
+
chalk__default["default"].red(
|
|
442
|
+
'Your root package.json contains a "resolutions" entry for "esbuild". This was included in older @backstage/create-app templates in order to work around build issues that have since been fixed. Please remove the entry and run `yarn install`'
|
|
443
|
+
)
|
|
444
|
+
);
|
|
413
445
|
}
|
|
414
446
|
} catch {
|
|
415
447
|
}
|
|
@@ -426,9 +458,13 @@ const buildPackages = async (options) => {
|
|
|
426
458
|
throw new Error("targetDir must be set for all build options");
|
|
427
459
|
}
|
|
428
460
|
const rollupConfigs = await Promise.all(options.map(makeRollupConfigs));
|
|
429
|
-
await Promise.all(
|
|
461
|
+
await Promise.all(
|
|
462
|
+
options.map(({ targetDir }) => fs__default["default"].remove(path.resolve(targetDir, "dist")))
|
|
463
|
+
);
|
|
430
464
|
const buildTasks = rollupConfigs.flat().map((opts) => () => rollupBuild(opts));
|
|
431
|
-
const typeDefinitionTargetDirs = options.filter(
|
|
465
|
+
const typeDefinitionTargetDirs = options.filter(
|
|
466
|
+
({ outputs, useApiExtractor }) => outputs.has(Output.types) && useApiExtractor
|
|
467
|
+
).map((_) => _.targetDir);
|
|
432
468
|
if (typeDefinitionTargetDirs.length > 0) {
|
|
433
469
|
buildTasks.unshift(() => buildTypeDefinitions(typeDefinitionTargetDirs));
|
|
434
470
|
}
|
|
@@ -460,14 +496,18 @@ function resolveEntrypoint(pkg, name) {
|
|
|
460
496
|
}
|
|
461
497
|
async function writeReleaseStageEntrypoint(pkg, stage, targetDir) {
|
|
462
498
|
await fs__default["default"].ensureDir(path.resolve(targetDir, stage));
|
|
463
|
-
await fs__default["default"].writeJson(
|
|
464
|
-
|
|
465
|
-
|
|
466
|
-
|
|
467
|
-
|
|
468
|
-
|
|
469
|
-
|
|
470
|
-
|
|
499
|
+
await fs__default["default"].writeJson(
|
|
500
|
+
path.resolve(targetDir, stage, "package.json"),
|
|
501
|
+
{
|
|
502
|
+
name: pkg.name,
|
|
503
|
+
version: pkg.version,
|
|
504
|
+
main: resolveEntrypoint(pkg, "main"),
|
|
505
|
+
module: resolveEntrypoint(pkg, "module"),
|
|
506
|
+
browser: resolveEntrypoint(pkg, "browser"),
|
|
507
|
+
types: path.join("..", pkg.publishConfig[`${stage}Types`])
|
|
508
|
+
},
|
|
509
|
+
{ encoding: "utf8", spaces: 2 }
|
|
510
|
+
);
|
|
471
511
|
}
|
|
472
512
|
async function copyPackageDist(packageDir, targetDir) {
|
|
473
513
|
var _a;
|
|
@@ -490,7 +530,10 @@ async function copyPackageDist(packageDir, targetDir) {
|
|
|
490
530
|
const filePaths = await npmPackList__default["default"]({ path: packageDir });
|
|
491
531
|
await fs__default["default"].ensureDir(targetDir);
|
|
492
532
|
for (const filePath of filePaths.sort()) {
|
|
493
|
-
await fs__default["default"].copy(
|
|
533
|
+
await fs__default["default"].copy(
|
|
534
|
+
path.resolve(packageDir, filePath),
|
|
535
|
+
path.resolve(targetDir, filePath)
|
|
536
|
+
);
|
|
494
537
|
}
|
|
495
538
|
if (publishConfig.alphaTypes) {
|
|
496
539
|
await writeReleaseStageEntrypoint(pkg, "alpha", targetDir);
|
|
@@ -519,7 +562,9 @@ async function createDistWorkspace(packageNames, options = {}) {
|
|
|
519
562
|
const targets = Array.from(targetNames).map((name) => packageGraph.get(name));
|
|
520
563
|
if (options.buildDependencies) {
|
|
521
564
|
const exclude = (_b = options.buildExcludes) != null ? _b : [];
|
|
522
|
-
const toBuild = new Set(
|
|
565
|
+
const toBuild = new Set(
|
|
566
|
+
targets.map((_) => _.name).filter((name) => !exclude.includes(name))
|
|
567
|
+
);
|
|
523
568
|
const standardBuilds = new Array();
|
|
524
569
|
const customBuild = new Array();
|
|
525
570
|
for (const pkg of packages) {
|
|
@@ -528,7 +573,9 @@ async function createDistWorkspace(packageNames, options = {}) {
|
|
|
528
573
|
}
|
|
529
574
|
const role = (_c = pkg.packageJson.backstage) == null ? void 0 : _c.role;
|
|
530
575
|
if (!role) {
|
|
531
|
-
console.warn(
|
|
576
|
+
console.warn(
|
|
577
|
+
`Building ${pkg.packageJson.name} separately because it has no role`
|
|
578
|
+
);
|
|
532
579
|
customBuild.push(pkg.packageJson.name);
|
|
533
580
|
continue;
|
|
534
581
|
}
|
|
@@ -538,12 +585,16 @@ async function createDistWorkspace(packageNames, options = {}) {
|
|
|
538
585
|
continue;
|
|
539
586
|
}
|
|
540
587
|
if (!buildScript.startsWith("backstage-cli package build")) {
|
|
541
|
-
console.warn(
|
|
588
|
+
console.warn(
|
|
589
|
+
`Building ${pkg.packageJson.name} separately because it has a custom build script, '${buildScript}'`
|
|
590
|
+
);
|
|
542
591
|
customBuild.push(pkg.packageJson.name);
|
|
543
592
|
continue;
|
|
544
593
|
}
|
|
545
594
|
if (packageRoles.getRoleInfo(role).output.includes("bundle")) {
|
|
546
|
-
console.warn(
|
|
595
|
+
console.warn(
|
|
596
|
+
`Building ${pkg.packageJson.name} separately because it is a bundled package`
|
|
597
|
+
);
|
|
547
598
|
customBuild.push(pkg.packageJson.name);
|
|
548
599
|
continue;
|
|
549
600
|
}
|
|
@@ -580,13 +631,16 @@ async function createDistWorkspace(packageNames, options = {}) {
|
|
|
580
631
|
const dir = path.relative(index.paths.targetRoot, target.dir);
|
|
581
632
|
return path.join(dir, "package.json");
|
|
582
633
|
});
|
|
583
|
-
await tar__default["default"].create(
|
|
584
|
-
|
|
585
|
-
|
|
586
|
-
|
|
587
|
-
|
|
588
|
-
|
|
589
|
-
|
|
634
|
+
await tar__default["default"].create(
|
|
635
|
+
{
|
|
636
|
+
file: path.resolve(targetDir, options.skeleton),
|
|
637
|
+
cwd: targetDir,
|
|
638
|
+
portable: true,
|
|
639
|
+
noMtime: true,
|
|
640
|
+
gzip: options.skeleton.endsWith(".gz")
|
|
641
|
+
},
|
|
642
|
+
skeletonFiles
|
|
643
|
+
);
|
|
590
644
|
}
|
|
591
645
|
return targetDir;
|
|
592
646
|
}
|
|
@@ -596,16 +650,21 @@ const FAST_PACK_SCRIPTS = [
|
|
|
596
650
|
"backstage-cli package prepack"
|
|
597
651
|
];
|
|
598
652
|
async function moveToDistWorkspace(workspaceDir, localPackages) {
|
|
599
|
-
const [fastPackPackages, slowPackPackages] = partition__default["default"](
|
|
600
|
-
|
|
601
|
-
|
|
602
|
-
|
|
603
|
-
|
|
604
|
-
|
|
605
|
-
|
|
606
|
-
|
|
607
|
-
|
|
608
|
-
|
|
653
|
+
const [fastPackPackages, slowPackPackages] = partition__default["default"](
|
|
654
|
+
localPackages,
|
|
655
|
+
(pkg) => {
|
|
656
|
+
var _a;
|
|
657
|
+
return FAST_PACK_SCRIPTS.includes((_a = pkg.packageJson.scripts) == null ? void 0 : _a.prepack);
|
|
658
|
+
}
|
|
659
|
+
);
|
|
660
|
+
await Promise.all(
|
|
661
|
+
fastPackPackages.map(async (target) => {
|
|
662
|
+
console.log(`Moving ${target.name} into dist workspace`);
|
|
663
|
+
const outputDir = path.relative(index.paths.targetRoot, target.dir);
|
|
664
|
+
const absoluteOutputPath = path.resolve(workspaceDir, outputDir);
|
|
665
|
+
await copyPackageDist(target.dir, absoluteOutputPath);
|
|
666
|
+
})
|
|
667
|
+
);
|
|
609
668
|
async function pack(target, archive) {
|
|
610
669
|
var _a, _b;
|
|
611
670
|
console.log(`Repacking ${target.name} into dist workspace`);
|
|
@@ -626,21 +685,34 @@ async function moveToDistWorkspace(workspaceDir, localPackages) {
|
|
|
626
685
|
});
|
|
627
686
|
await fs__default["default"].remove(archivePath);
|
|
628
687
|
if (target.packageJson.bundled) {
|
|
629
|
-
const pkgJson = await fs__default["default"].readJson(
|
|
688
|
+
const pkgJson = await fs__default["default"].readJson(
|
|
689
|
+
path.resolve(absoluteOutputPath, "package.json")
|
|
690
|
+
);
|
|
630
691
|
delete pkgJson.dependencies;
|
|
631
692
|
delete pkgJson.devDependencies;
|
|
632
693
|
delete pkgJson.peerDependencies;
|
|
633
694
|
delete pkgJson.optionalDependencies;
|
|
634
|
-
await fs__default["default"].writeJson(
|
|
635
|
-
|
|
636
|
-
|
|
695
|
+
await fs__default["default"].writeJson(
|
|
696
|
+
path.resolve(absoluteOutputPath, "package.json"),
|
|
697
|
+
pkgJson,
|
|
698
|
+
{
|
|
699
|
+
spaces: 2
|
|
700
|
+
}
|
|
701
|
+
);
|
|
637
702
|
}
|
|
638
703
|
}
|
|
639
|
-
const [unsafePackages, safePackages] = partition__default["default"](
|
|
704
|
+
const [unsafePackages, safePackages] = partition__default["default"](
|
|
705
|
+
slowPackPackages,
|
|
706
|
+
(p) => UNSAFE_PACKAGES.includes(p.name)
|
|
707
|
+
);
|
|
640
708
|
for (const target of unsafePackages) {
|
|
641
709
|
await pack(target, `temp-package.tgz`);
|
|
642
710
|
}
|
|
643
|
-
await Promise.all(
|
|
711
|
+
await Promise.all(
|
|
712
|
+
safePackages.map(
|
|
713
|
+
async (target, index) => pack(target, `temp-package-${index}.tgz`)
|
|
714
|
+
)
|
|
715
|
+
);
|
|
644
716
|
}
|
|
645
717
|
|
|
646
718
|
exports.Output = Output;
|
|
@@ -648,4 +720,4 @@ exports.buildPackage = buildPackage;
|
|
|
648
720
|
exports.buildPackages = buildPackages;
|
|
649
721
|
exports.createDistWorkspace = createDistWorkspace;
|
|
650
722
|
exports.getOutputsForRole = getOutputsForRole;
|
|
651
|
-
//# sourceMappingURL=createDistWorkspace-
|
|
723
|
+
//# sourceMappingURL=createDistWorkspace-cb9a9a84.cjs.js.map
|