@backstage/cli 0.28.0-next.1 → 0.28.0-next.2

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 (131) hide show
  1. package/CHANGELOG.md +25 -0
  2. package/config/jest.js +9 -1
  3. package/config/jestCacheResultProcessor.cjs +23 -0
  4. package/config/jestSwcTransform.js +4 -1
  5. package/dist/commands/build/buildBackend.cjs.js +65 -0
  6. package/dist/commands/build/buildFrontend.cjs.js +56 -0
  7. package/dist/commands/build/command.cjs.js +72 -0
  8. package/dist/commands/build/index.cjs.js +8 -0
  9. package/dist/commands/buildWorkspace.cjs.js +24 -0
  10. package/dist/commands/clean/clean.cjs.js +19 -0
  11. package/dist/{cjs/docs-BGyA6jwW.cjs.js → commands/config/docs.cjs.js} +4 -12
  12. package/dist/{cjs/print-Dd6aChXU.cjs.js → commands/config/print.cjs.js} +4 -12
  13. package/dist/{cjs/schema-D93FRhBL.cjs.js → commands/config/schema.cjs.js} +4 -12
  14. package/dist/commands/config/validate.cjs.js +19 -0
  15. package/dist/{cjs/index-j193pV_Y.cjs.js → commands/create-github-app/GithubCreateAppServer.cjs.js} +2 -110
  16. package/dist/commands/create-github-app/index.cjs.js +117 -0
  17. package/dist/commands/index.cjs.js +231 -0
  18. package/dist/{cjs/info-DuAv1Tsx.cjs.js → commands/info.cjs.js} +13 -17
  19. package/dist/{cjs/lint-BwiDJkjE.cjs.js → commands/lint.cjs.js} +10 -10
  20. package/dist/commands/migrate/packageExports.cjs.js +17 -0
  21. package/dist/{cjs/packageLintConfigs-DeUGBP17.cjs.js → commands/migrate/packageLintConfigs.cjs.js} +2 -10
  22. package/dist/{cjs/packageRole-Iuv9NRii.cjs.js → commands/migrate/packageRole.cjs.js} +5 -8
  23. package/dist/{cjs/packageScripts-DX6dilK6.cjs.js → commands/migrate/packageScripts.cjs.js} +1 -1
  24. package/dist/{cjs/reactRouterDeps-CR-hjviw.cjs.js → commands/migrate/reactRouterDeps.cjs.js} +1 -1
  25. package/dist/commands/new/new.cjs.js +101 -0
  26. package/dist/commands/pack.cjs.js +29 -0
  27. package/dist/commands/repo/build.cjs.js +113 -0
  28. package/dist/{cjs/clean-a6Q4k9Vm.cjs.js → commands/repo/clean.cjs.js} +5 -10
  29. package/dist/{cjs/fix-COitqgqm.cjs.js → commands/repo/fix.cjs.js} +8 -13
  30. package/dist/commands/repo/lint.cjs.js +193 -0
  31. package/dist/{cjs/list-deprecations-CtUaQgaP.cjs.js → commands/repo/list-deprecations.cjs.js} +7 -12
  32. package/dist/commands/repo/optionsParser.cjs.js +37 -0
  33. package/dist/commands/repo/test.cjs.js +274 -0
  34. package/dist/commands/start/command.cjs.js +48 -0
  35. package/dist/commands/start/index.cjs.js +8 -0
  36. package/dist/commands/start/startBackend.cjs.js +112 -0
  37. package/dist/commands/start/startFrontend.cjs.js +47 -0
  38. package/dist/{cjs/test-COxIko8N.cjs.js → commands/test.cjs.js} +6 -12
  39. package/dist/{cjs/bump-BHEh5ytx.cjs.js → commands/versions/bump.cjs.js} +21 -190
  40. package/dist/commands/versions/migrate.cjs.js +112 -0
  41. package/dist/index.cjs.js +29 -7
  42. package/dist/lib/builder/config.cjs.js +199 -0
  43. package/dist/lib/builder/packager.cjs.js +131 -0
  44. package/dist/lib/builder/plugins.cjs.js +71 -0
  45. package/dist/lib/builder/types.cjs.js +11 -0
  46. package/dist/lib/bundler/LinkedPackageResolvePlugin.cjs.js +47 -0
  47. package/dist/lib/bundler/backend.cjs.js +36 -0
  48. package/dist/{cjs/buildBackend-CkhZWCz1.cjs.js → lib/bundler/bundle.cjs.js} +26 -113
  49. package/dist/lib/bundler/config.cjs.js +469 -0
  50. package/dist/lib/bundler/hasReactDomClient.cjs.js +13 -0
  51. package/dist/lib/bundler/moduleFederation.cjs.js +28 -0
  52. package/dist/lib/bundler/optimization.cjs.js +63 -0
  53. package/dist/lib/bundler/packageDetection.cjs.js +117 -0
  54. package/dist/lib/bundler/paths.cjs.js +60 -0
  55. package/dist/lib/bundler/server.cjs.js +246 -0
  56. package/dist/lib/bundler/transforms.cjs.js +171 -0
  57. package/dist/lib/codeowners/codeowners.cjs.js +92 -0
  58. package/dist/{cjs/config-DBpmZirN.cjs.js → lib/config.cjs.js} +6 -6
  59. package/dist/{cjs/entryPoints-coip0t-x.cjs.js → lib/entryPoints.cjs.js} +1 -1
  60. package/dist/lib/errors.cjs.js +45 -0
  61. package/dist/lib/experimental/IpcServer.cjs.js +60 -0
  62. package/dist/lib/experimental/ServerDataStore.cjs.js +36 -0
  63. package/dist/lib/experimental/startBackendExperimental.cjs.js +128 -0
  64. package/dist/lib/new/FactoryRegistry.cjs.js +96 -0
  65. package/dist/lib/new/factories/backendModule.cjs.js +82 -0
  66. package/dist/lib/new/factories/backendPlugin.cjs.js +78 -0
  67. package/dist/lib/new/factories/common/prompts.cjs.js +57 -0
  68. package/dist/lib/new/factories/common/tasks.cjs.js +66 -0
  69. package/dist/lib/new/factories/common/util.cjs.js +16 -0
  70. package/dist/lib/new/factories/frontendPlugin.cjs.js +107 -0
  71. package/dist/lib/new/factories/index.cjs.js +24 -0
  72. package/dist/lib/new/factories/nodeLibraryPackage.cjs.js +57 -0
  73. package/dist/lib/new/factories/pluginCommon.cjs.js +58 -0
  74. package/dist/lib/new/factories/pluginNode.cjs.js +58 -0
  75. package/dist/lib/new/factories/pluginWeb.cjs.js +58 -0
  76. package/dist/lib/new/factories/scaffolderModule.cjs.js +90 -0
  77. package/dist/lib/new/factories/webLibraryPackage.cjs.js +57 -0
  78. package/dist/lib/new/types.cjs.js +8 -0
  79. package/dist/lib/packager/createDistWorkspace.cjs.js +219 -0
  80. package/dist/{cjs/productionPack-BxoMbBkH.cjs.js → lib/packager/productionPack.cjs.js} +8 -96
  81. package/dist/{cjs/parallel-BszNaKyc.cjs.js → lib/parallel.cjs.js} +2 -1
  82. package/dist/lib/paths.cjs.js +8 -0
  83. package/dist/{cjs/publishing-DQtsKTbc.cjs.js → lib/publishing.cjs.js} +1 -1
  84. package/dist/{cjs/role-BjiBExhi.cjs.js → lib/role.cjs.js} +3 -3
  85. package/dist/{cjs/run-CpZGNJQr.cjs.js → lib/run.cjs.js} +6 -5
  86. package/dist/{cjs/svgrTemplate-BTjBQ3by.cjs.js → lib/svgrTemplate.cjs.js} +1 -1
  87. package/dist/lib/tasks.cjs.js +188 -0
  88. package/dist/lib/typeDistProject.cjs.js +94 -0
  89. package/dist/lib/urls.cjs.js +13 -0
  90. package/dist/lib/version.cjs.js +86 -0
  91. package/dist/{cjs/yarn-6FNAgNBK.cjs.js → lib/versioning/Lockfile.cjs.js} +1 -31
  92. package/dist/lib/versioning/packages.cjs.js +75 -0
  93. package/dist/lib/yarn.cjs.js +34 -0
  94. package/dist/packages/backend-defaults/package.json.cjs.js +6 -0
  95. package/dist/packages/backend-plugin-api/package.json.cjs.js +6 -0
  96. package/dist/packages/backend-test-utils/package.json.cjs.js +6 -0
  97. package/dist/packages/cli/package.json.cjs.js +159 -0
  98. package/dist/packages/config/package.json.cjs.js +6 -0
  99. package/dist/packages/core-app-api/package.json.cjs.js +6 -0
  100. package/dist/packages/core-components/package.json.cjs.js +6 -0
  101. package/dist/packages/core-plugin-api/package.json.cjs.js +6 -0
  102. package/dist/packages/dev-utils/package.json.cjs.js +6 -0
  103. package/dist/packages/test-utils/package.json.cjs.js +6 -0
  104. package/dist/packages/theme/package.json.cjs.js +6 -0
  105. package/dist/plugins/auth-backend/package.json.cjs.js +6 -0
  106. package/dist/plugins/auth-backend-module-guest-provider/package.json.cjs.js +6 -0
  107. package/dist/plugins/scaffolder-node/package.json.cjs.js +6 -0
  108. package/package.json +13 -11
  109. package/dist/cjs/build-CQdcGuBr.cjs.js +0 -194
  110. package/dist/cjs/buildWorkspace-CZPp9oRm.cjs.js +0 -53
  111. package/dist/cjs/clean-W6nxsHeK.cjs.js +0 -22
  112. package/dist/cjs/createDistWorkspace-DdHPGSMS.cjs.js +0 -576
  113. package/dist/cjs/index-BXv4Xa2e.cjs.js +0 -625
  114. package/dist/cjs/index-CGuAP7nv.cjs.js +0 -131
  115. package/dist/cjs/index-b1ouG3q6.cjs.js +0 -518
  116. package/dist/cjs/lint-Dsiocf9K.cjs.js +0 -91
  117. package/dist/cjs/moduleFederation-DmStnvEg.cjs.js +0 -910
  118. package/dist/cjs/new-CEnFhTT-.cjs.js +0 -1043
  119. package/dist/cjs/pack-XLRcGJqH.cjs.js +0 -34
  120. package/dist/cjs/packageExports-BJBwdvUH.cjs.js +0 -27
  121. package/dist/cjs/test-JcLI2pPM.cjs.js +0 -126
  122. package/dist/cjs/validate-CELljsEX.cjs.js +0 -28
  123. /package/templates/default-backend-module/{.eslintrc.js → .eslintrc.js.hbs} +0 -0
  124. /package/templates/default-backend-plugin/{.eslintrc.js → .eslintrc.js.hbs} +0 -0
  125. /package/templates/default-common-plugin-package/{.eslintrc.js → .eslintrc.js.hbs} +0 -0
  126. /package/templates/default-node-plugin-package/{.eslintrc.js → .eslintrc.js.hbs} +0 -0
  127. /package/templates/default-plugin/{.eslintrc.js → .eslintrc.js.hbs} +0 -0
  128. /package/templates/default-react-plugin-package/{.eslintrc.js → .eslintrc.js.hbs} +0 -0
  129. /package/templates/node-library-package/{.eslintrc.js → .eslintrc.js.hbs} +0 -0
  130. /package/templates/scaffolder-module/{.eslintrc.js → .eslintrc.js.hbs} +0 -0
  131. /package/templates/web-library-package/{.eslintrc.js → .eslintrc.js.hbs} +0 -0
@@ -1,576 +0,0 @@
1
- 'use strict';
2
-
3
- var chalk = require('chalk');
4
- var fs = require('fs-extra');
5
- var path = require('path');
6
- var pLimit = require('p-limit');
7
- var os = require('os');
8
- var tar = require('tar');
9
- var partition = require('lodash/partition');
10
- var index = require('./index-b1ouG3q6.cjs.js');
11
- var run = require('./run-CpZGNJQr.cjs.js');
12
- var rollup = require('rollup');
13
- var commonjs = require('@rollup/plugin-commonjs');
14
- var resolve = require('@rollup/plugin-node-resolve');
15
- var postcss = require('rollup-plugin-postcss');
16
- var esbuild = require('rollup-plugin-esbuild');
17
- var svgr = require('@svgr/rollup');
18
- var dts = require('rollup-plugin-dts');
19
- var json = require('@rollup/plugin-json');
20
- var yaml = require('@rollup/plugin-yaml');
21
- var rollupPluginutils = require('rollup-pluginutils');
22
- var svgrTemplate = require('./svgrTemplate-BTjBQ3by.cjs.js');
23
- var entryPoints = require('./entryPoints-coip0t-x.cjs.js');
24
- var cliNode = require('@backstage/cli-node');
25
- var parallel = require('./parallel-BszNaKyc.cjs.js');
26
- var productionPack = require('./productionPack-BxoMbBkH.cjs.js');
27
-
28
- function _interopDefaultCompat (e) { return e && typeof e === 'object' && 'default' in e ? e : { default: e }; }
29
-
30
- var chalk__default = /*#__PURE__*/_interopDefaultCompat(chalk);
31
- var fs__default = /*#__PURE__*/_interopDefaultCompat(fs);
32
- var pLimit__default = /*#__PURE__*/_interopDefaultCompat(pLimit);
33
- var tar__default = /*#__PURE__*/_interopDefaultCompat(tar);
34
- var partition__default = /*#__PURE__*/_interopDefaultCompat(partition);
35
- var commonjs__default = /*#__PURE__*/_interopDefaultCompat(commonjs);
36
- var resolve__default = /*#__PURE__*/_interopDefaultCompat(resolve);
37
- var postcss__default = /*#__PURE__*/_interopDefaultCompat(postcss);
38
- var esbuild__default = /*#__PURE__*/_interopDefaultCompat(esbuild);
39
- var svgr__default = /*#__PURE__*/_interopDefaultCompat(svgr);
40
- var dts__default = /*#__PURE__*/_interopDefaultCompat(dts);
41
- var json__default = /*#__PURE__*/_interopDefaultCompat(json);
42
- var yaml__default = /*#__PURE__*/_interopDefaultCompat(yaml);
43
-
44
- function forwardFileImports(options) {
45
- const filter = rollupPluginutils.createFilter(options.include, options.exclude);
46
- const exportedFiles = /* @__PURE__ */ new Set();
47
- const generatedFor = /* @__PURE__ */ new Set();
48
- return {
49
- name: "forward-file-imports",
50
- async generateBundle(outputOptions, bundle, isWrite) {
51
- if (!isWrite) {
52
- return;
53
- }
54
- const dir = outputOptions.dir || path.dirname(outputOptions.file);
55
- if (generatedFor.has(dir)) {
56
- return;
57
- }
58
- for (const output of Object.values(bundle)) {
59
- if (output.type !== "chunk") {
60
- continue;
61
- }
62
- const chunk = output;
63
- if (!chunk.facadeModuleId) {
64
- continue;
65
- }
66
- generatedFor.add(dir);
67
- const srcRoot = path.dirname(chunk.facadeModuleId);
68
- await Promise.all(
69
- Array.from(exportedFiles).map(async (exportedFile) => {
70
- const outputPath = path.relative(srcRoot, exportedFile);
71
- const targetFile = path.resolve(dir, outputPath);
72
- await fs__default.default.ensureDir(path.dirname(targetFile));
73
- await fs__default.default.copyFile(exportedFile, targetFile);
74
- })
75
- );
76
- return;
77
- }
78
- },
79
- options(inputOptions) {
80
- const origExternal = inputOptions.external;
81
- const external = (id, importer, isResolved) => {
82
- if (typeof origExternal === "function" && origExternal(id, importer, isResolved)) {
83
- return true;
84
- }
85
- if (Array.isArray(origExternal) && origExternal.includes(id)) {
86
- return true;
87
- }
88
- if (!filter(id)) {
89
- return false;
90
- }
91
- if (!importer) {
92
- throw new Error(`Unknown importer of file module ${id}`);
93
- }
94
- const fullId = isResolved ? id : path.resolve(path.dirname(importer), id);
95
- exportedFiles.add(fullId);
96
- return true;
97
- };
98
- return { ...inputOptions, external };
99
- }
100
- };
101
- }
102
-
103
- var Output = /* @__PURE__ */ ((Output2) => {
104
- Output2[Output2["esm"] = 0] = "esm";
105
- Output2[Output2["cjs"] = 1] = "cjs";
106
- Output2[Output2["types"] = 2] = "types";
107
- return Output2;
108
- })(Output || {});
109
-
110
- const SCRIPT_EXTS = [".js", ".jsx", ".ts", ".tsx"];
111
- function isFileImport(source) {
112
- if (source.startsWith(".")) {
113
- return true;
114
- }
115
- if (source.startsWith("/")) {
116
- return true;
117
- }
118
- if (source.match(/[a-z]:/i)) {
119
- return true;
120
- }
121
- return false;
122
- }
123
- function buildInternalImportPattern(options) {
124
- const inlinedPackages = options.workspacePackages.filter(
125
- (pkg) => pkg.packageJson.backstage?.inline
126
- );
127
- for (const { packageJson } of inlinedPackages) {
128
- if (!packageJson.private) {
129
- throw new Error(
130
- `Inlined package ${packageJson.name} must be marked as private`
131
- );
132
- }
133
- }
134
- const names = inlinedPackages.map((pkg) => pkg.packageJson.name);
135
- return new RegExp(`^(?:${names.join("|")})(?:$|/)`);
136
- }
137
- async function makeRollupConfigs(options) {
138
- const configs = new Array();
139
- const targetDir = options.targetDir ?? index.paths.targetDir;
140
- let targetPkg = options.packageJson;
141
- if (!targetPkg) {
142
- const packagePath = path.resolve(targetDir, "package.json");
143
- targetPkg = await fs__default.default.readJson(packagePath);
144
- }
145
- const onwarn = ({ code, message }) => {
146
- if (code === "EMPTY_BUNDLE") {
147
- return;
148
- }
149
- if (options.logPrefix) {
150
- console.log(options.logPrefix + message);
151
- } else {
152
- console.log(message);
153
- }
154
- };
155
- const distDir = path.resolve(targetDir, "dist");
156
- const entryPoints$1 = entryPoints.readEntryPoints(targetPkg);
157
- const scriptEntryPoints = entryPoints$1.filter(
158
- (e) => SCRIPT_EXTS.includes(e.ext)
159
- );
160
- const internalImportPattern = buildInternalImportPattern(options);
161
- const external = (source, importer, isResolved) => Boolean(
162
- importer && !isResolved && !internalImportPattern.test(source) && !isFileImport(source)
163
- );
164
- if (options.outputs.has(Output.cjs) || options.outputs.has(Output.esm)) {
165
- const output = new Array();
166
- const mainFields = ["module", "main"];
167
- if (options.outputs.has(Output.cjs)) {
168
- output.push({
169
- dir: distDir,
170
- entryFileNames: `[name].cjs.js`,
171
- chunkFileNames: `cjs/[name]-[hash].cjs.js`,
172
- format: "commonjs",
173
- interop: "compat",
174
- sourcemap: true,
175
- exports: "named"
176
- });
177
- }
178
- if (options.outputs.has(Output.esm)) {
179
- output.push({
180
- dir: distDir,
181
- entryFileNames: `[name].esm.js`,
182
- chunkFileNames: `esm/[name]-[hash].esm.js`,
183
- format: "module",
184
- sourcemap: true,
185
- preserveModules: true,
186
- preserveModulesRoot: `${targetDir}/src`
187
- });
188
- mainFields.unshift("browser");
189
- }
190
- configs.push({
191
- input: Object.fromEntries(
192
- scriptEntryPoints.map((e) => [e.name, path.resolve(targetDir, e.path)])
193
- ),
194
- output,
195
- onwarn,
196
- makeAbsoluteExternalsRelative: false,
197
- preserveEntrySignatures: "strict",
198
- // All module imports are always marked as external
199
- external,
200
- plugins: [
201
- resolve__default.default({ mainFields }),
202
- commonjs__default.default({
203
- include: /node_modules/,
204
- exclude: [/\/[^/]+\.(?:stories|test)\.[^/]+$/]
205
- }),
206
- postcss__default.default(),
207
- forwardFileImports({
208
- exclude: /\.icon\.svg$/,
209
- include: [
210
- /\.svg$/,
211
- /\.png$/,
212
- /\.gif$/,
213
- /\.jpg$/,
214
- /\.jpeg$/,
215
- /\.eot$/,
216
- /\.woff$/,
217
- /\.woff2$/,
218
- /\.ttf$/,
219
- /\.md$/
220
- ]
221
- }),
222
- json__default.default(),
223
- yaml__default.default(),
224
- svgr__default.default({
225
- include: /\.icon\.svg$/,
226
- template: svgrTemplate.svgrTemplate
227
- }),
228
- esbuild__default.default({
229
- target: "ES2022",
230
- minify: options.minify
231
- })
232
- ]
233
- });
234
- }
235
- if (options.outputs.has(Output.types)) {
236
- const input = Object.fromEntries(
237
- scriptEntryPoints.map((e) => [
238
- e.name,
239
- index.paths.resolveTargetRoot(
240
- "dist-types",
241
- path.relative(index.paths.targetRoot, targetDir),
242
- e.path.replace(/\.(?:ts|tsx)$/, ".d.ts")
243
- )
244
- ])
245
- );
246
- for (const path$1 of Object.values(input)) {
247
- const declarationsExist = await fs__default.default.pathExists(path$1);
248
- if (!declarationsExist) {
249
- const declarationPath = path.relative(targetDir, path$1);
250
- throw new Error(
251
- `No declaration files found at ${declarationPath}, be sure to run ${chalk__default.default.bgRed.white(
252
- "yarn tsc"
253
- )} to generate .d.ts files before packaging`
254
- );
255
- }
256
- }
257
- configs.push({
258
- input,
259
- output: {
260
- dir: distDir,
261
- entryFileNames: `[name].d.ts`,
262
- chunkFileNames: `types/[name]-[hash].d.ts`,
263
- format: "es"
264
- },
265
- external: (source, importer, isResolved) => /\.css|scss|sass|svg|eot|woff|woff2|ttf$/.test(source) || external(source, importer, isResolved),
266
- onwarn,
267
- plugins: [dts__default.default({ respectExternal: true })]
268
- });
269
- }
270
- return configs;
271
- }
272
-
273
- function formatErrorMessage(error) {
274
- let msg = "";
275
- if (error.code === "PLUGIN_ERROR") {
276
- if (error.plugin === "esbuild") {
277
- msg += `${error.message}`;
278
- if (error.errors?.length) {
279
- msg += `
280
-
281
- `;
282
- for (const { text, location } of error.errors) {
283
- const { line, column } = location;
284
- const path$1 = path.relative(index.paths.targetDir, error.id);
285
- const loc = chalk__default.default.cyan(`${path$1}:${line}:${column}`);
286
- if (text === 'Unexpected "<"' && error.id.endsWith(".js")) {
287
- msg += `${loc}: ${text}, JavaScript files with JSX should use a .jsx extension`;
288
- } else {
289
- msg += `${loc}: ${text}`;
290
- }
291
- }
292
- }
293
- } else {
294
- msg += `(plugin ${error.plugin}) ${error}
295
- `;
296
- }
297
- } else {
298
- if (error.loc) {
299
- const file = `${index.paths.resolveTarget(error.loc.file || error.id)}`;
300
- const pos = `${error.loc.line}:${error.loc.column}`;
301
- msg += `${file} [${pos}]
302
- `;
303
- } else if (error.id) {
304
- msg += `${index.paths.resolveTarget(error.id)}
305
- `;
306
- }
307
- msg += `${error}
308
- `;
309
- if (error.url) {
310
- msg += `${chalk__default.default.cyan(error.url)}
311
- `;
312
- }
313
- if (error.frame) {
314
- msg += `${chalk__default.default.dim(error.frame)}
315
- `;
316
- }
317
- }
318
- return msg;
319
- }
320
- async function rollupBuild(config) {
321
- try {
322
- const bundle = await rollup.rollup(config);
323
- if (config.output) {
324
- for (const output of [config.output].flat()) {
325
- await bundle.generate(output);
326
- await bundle.write(output);
327
- }
328
- }
329
- } catch (error) {
330
- throw new Error(formatErrorMessage(error));
331
- }
332
- }
333
- const buildPackage = async (options) => {
334
- try {
335
- const { resolutions } = await fs__default.default.readJson(
336
- index.paths.resolveTargetRoot("package.json")
337
- );
338
- if (resolutions?.esbuild) {
339
- console.warn(
340
- chalk__default.default.red(
341
- '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`'
342
- )
343
- );
344
- }
345
- } catch {
346
- }
347
- const rollupConfigs = await makeRollupConfigs(options);
348
- await fs__default.default.remove(index.paths.resolveTarget("dist"));
349
- const buildTasks = rollupConfigs.map(rollupBuild);
350
- await Promise.all(buildTasks);
351
- };
352
- const buildPackages = async (options) => {
353
- if (options.some((opt) => !opt.targetDir)) {
354
- throw new Error("targetDir must be set for all build options");
355
- }
356
- const rollupConfigs = await Promise.all(options.map(makeRollupConfigs));
357
- await Promise.all(
358
- options.map(({ targetDir }) => fs__default.default.remove(path.resolve(targetDir, "dist")))
359
- );
360
- const buildTasks = rollupConfigs.flat().map((opts) => () => rollupBuild(opts));
361
- await parallel.runParallelWorkers({
362
- items: buildTasks,
363
- worker: async (task) => task()
364
- });
365
- };
366
- function getOutputsForRole(role) {
367
- const outputs = /* @__PURE__ */ new Set();
368
- for (const output of cliNode.PackageRoles.getRoleInfo(role).output) {
369
- if (output === "cjs") {
370
- outputs.add(Output.cjs);
371
- }
372
- if (output === "esm") {
373
- outputs.add(Output.esm);
374
- }
375
- if (output === "types") {
376
- outputs.add(Output.types);
377
- }
378
- }
379
- return outputs;
380
- }
381
-
382
- const UNSAFE_PACKAGES = [
383
- ...Object.keys(index.dependencies),
384
- ...Object.keys(index.devDependencies)
385
- ];
386
- function prefixLogFunc(prefix, out) {
387
- return (data) => {
388
- for (const line of data.toString("utf8").split(/\r?\n/)) {
389
- process[out].write(`${prefix} ${line}
390
- `);
391
- }
392
- };
393
- }
394
- async function createDistWorkspace(packageNames, options = {}) {
395
- const targetDir = options.targetDir ?? await fs__default.default.mkdtemp(path.resolve(os.tmpdir(), "dist-workspace"));
396
- const packages = await cliNode.PackageGraph.listTargetPackages();
397
- const packageGraph = cliNode.PackageGraph.fromPackages(packages);
398
- const targetNames = packageGraph.collectPackageNames(packageNames, (node) => {
399
- if (node.packageJson.bundled) {
400
- return void 0;
401
- }
402
- return node.publishedLocalDependencies.keys();
403
- });
404
- const targets = Array.from(targetNames).map((name) => packageGraph.get(name));
405
- if (options.buildDependencies) {
406
- const exclude = options.buildExcludes ?? [];
407
- const configPaths = options.configPaths ?? [];
408
- const toBuild = new Set(
409
- targets.map((_) => _.name).filter((name) => !exclude.includes(name))
410
- );
411
- const standardBuilds = new Array();
412
- const customBuild = new Array();
413
- for (const pkg of packages) {
414
- if (!toBuild.has(pkg.packageJson.name)) {
415
- continue;
416
- }
417
- const role = pkg.packageJson.backstage?.role;
418
- if (!role) {
419
- console.warn(
420
- `Building ${pkg.packageJson.name} separately because it has no role`
421
- );
422
- customBuild.push({ dir: pkg.dir, name: pkg.packageJson.name });
423
- continue;
424
- }
425
- const buildScript = pkg.packageJson.scripts?.build;
426
- if (!buildScript) {
427
- customBuild.push({ dir: pkg.dir, name: pkg.packageJson.name });
428
- continue;
429
- }
430
- if (!buildScript.startsWith("backstage-cli package build")) {
431
- console.warn(
432
- `Building ${pkg.packageJson.name} separately because it has a custom build script, '${buildScript}'`
433
- );
434
- customBuild.push({ dir: pkg.dir, name: pkg.packageJson.name });
435
- continue;
436
- }
437
- if (cliNode.PackageRoles.getRoleInfo(role).output.includes("bundle")) {
438
- console.warn(
439
- `Building ${pkg.packageJson.name} separately because it is a bundled package`
440
- );
441
- const args = buildScript.includes("--config") ? [] : configPaths.map((p) => ["--config", p]).flat();
442
- customBuild.push({ dir: pkg.dir, name: pkg.packageJson.name, args });
443
- continue;
444
- }
445
- const outputs = getOutputsForRole(role);
446
- outputs.delete(Output.types);
447
- if (outputs.size > 0) {
448
- standardBuilds.push({
449
- targetDir: pkg.dir,
450
- packageJson: pkg.packageJson,
451
- outputs,
452
- logPrefix: `${chalk__default.default.cyan(path.relative(index.paths.targetRoot, pkg.dir))}: `,
453
- minify: options.minify,
454
- workspacePackages: packages
455
- });
456
- }
457
- }
458
- await buildPackages(standardBuilds);
459
- if (customBuild.length > 0) {
460
- await parallel.runParallelWorkers({
461
- items: customBuild,
462
- worker: async ({ name, dir, args }) => {
463
- await run.run("yarn", ["run", "build", ...args || []], {
464
- cwd: dir,
465
- stdoutLogFunc: prefixLogFunc(`${name}: `, "stdout"),
466
- stderrLogFunc: prefixLogFunc(`${name}: `, "stderr")
467
- });
468
- }
469
- });
470
- }
471
- }
472
- await moveToDistWorkspace(
473
- targetDir,
474
- targets,
475
- Boolean(options.alwaysYarnPack)
476
- );
477
- const files = options.files ?? ["yarn.lock", "package.json"];
478
- for (const file of files) {
479
- const src = typeof file === "string" ? file : file.src;
480
- const dest = typeof file === "string" ? file : file.dest;
481
- await fs__default.default.copy(index.paths.resolveTargetRoot(src), path.resolve(targetDir, dest));
482
- }
483
- if (options.skeleton) {
484
- const skeletonFiles = targets.map((target) => {
485
- const dir = path.relative(index.paths.targetRoot, target.dir);
486
- return path.join(dir, "package.json");
487
- }).sort();
488
- await tar__default.default.create(
489
- {
490
- file: path.resolve(targetDir, options.skeleton),
491
- cwd: targetDir,
492
- portable: true,
493
- noMtime: true,
494
- gzip: options.skeleton.endsWith(".gz")
495
- },
496
- skeletonFiles
497
- );
498
- }
499
- return targetDir;
500
- }
501
- const FAST_PACK_SCRIPTS = [
502
- void 0,
503
- "backstage-cli prepack",
504
- "backstage-cli package prepack"
505
- ];
506
- async function moveToDistWorkspace(workspaceDir, localPackages, alwaysYarnPack) {
507
- const [fastPackPackages, slowPackPackages] = partition__default.default(
508
- localPackages,
509
- (pkg) => !alwaysYarnPack && FAST_PACK_SCRIPTS.includes(pkg.packageJson.scripts?.prepack)
510
- );
511
- const tsMorphProject = fastPackPackages.length > 0 ? await productionPack.createTypeDistProject() : void 0;
512
- await Promise.all(
513
- fastPackPackages.map(async (target) => {
514
- console.log(`Moving ${target.name} into dist workspace`);
515
- const outputDir = path.relative(index.paths.targetRoot, target.dir);
516
- const absoluteOutputPath = path.resolve(workspaceDir, outputDir);
517
- await productionPack.productionPack({
518
- packageDir: target.dir,
519
- targetDir: absoluteOutputPath,
520
- project: tsMorphProject
521
- });
522
- })
523
- );
524
- async function pack(target, archive) {
525
- console.log(`Repacking ${target.name} into dist workspace`);
526
- const archivePath = path.resolve(workspaceDir, archive);
527
- await run.run("yarn", ["pack", "--filename", archivePath], {
528
- cwd: target.dir
529
- });
530
- const outputDir = path.relative(index.paths.targetRoot, target.dir);
531
- const absoluteOutputPath = path.resolve(workspaceDir, outputDir);
532
- await fs__default.default.ensureDir(absoluteOutputPath);
533
- await tar__default.default.extract({
534
- file: archivePath,
535
- cwd: absoluteOutputPath,
536
- strip: 1
537
- });
538
- await fs__default.default.remove(archivePath);
539
- if (target.packageJson.bundled) {
540
- const pkgJson = await fs__default.default.readJson(
541
- path.resolve(absoluteOutputPath, "package.json")
542
- );
543
- delete pkgJson.dependencies;
544
- delete pkgJson.devDependencies;
545
- delete pkgJson.peerDependencies;
546
- delete pkgJson.optionalDependencies;
547
- await fs__default.default.writeJson(
548
- path.resolve(absoluteOutputPath, "package.json"),
549
- pkgJson,
550
- {
551
- spaces: 2
552
- }
553
- );
554
- }
555
- }
556
- const [unsafePackages, safePackages] = partition__default.default(
557
- slowPackPackages,
558
- (p) => UNSAFE_PACKAGES.includes(p.name)
559
- );
560
- for (const target of unsafePackages) {
561
- await pack(target, `temp-package.tgz`);
562
- }
563
- const limit = pLimit__default.default(10);
564
- await Promise.all(
565
- safePackages.map(
566
- (target, index) => limit(() => pack(target, `temp-package-${index}.tgz`))
567
- )
568
- );
569
- }
570
-
571
- exports.Output = Output;
572
- exports.buildPackage = buildPackage;
573
- exports.buildPackages = buildPackages;
574
- exports.createDistWorkspace = createDistWorkspace;
575
- exports.getOutputsForRole = getOutputsForRole;
576
- //# sourceMappingURL=createDistWorkspace-DdHPGSMS.cjs.js.map