@backstage/cli 0.28.0 → 0.29.0-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.
Files changed (35) hide show
  1. package/CHANGELOG.md +42 -0
  2. package/config/jest.js +49 -25
  3. package/config/jestRejectNetworkRequests.js +59 -0
  4. package/config/nodeTransform.cjs +33 -0
  5. package/dist/commands/build/buildFrontend.cjs.js +8 -11
  6. package/dist/commands/buildWorkspace.cjs.js +1 -1
  7. package/dist/commands/index.cjs.js +9 -3
  8. package/dist/commands/repo/lint.cjs.js +6 -28
  9. package/dist/commands/repo/test.cjs.js +5 -27
  10. package/dist/commands/start/command.cjs.js +1 -0
  11. package/dist/commands/start/startBackend.cjs.js +23 -92
  12. package/dist/commands/start/startFrontend.cjs.js +6 -8
  13. package/dist/commands/versions/bump.cjs.js +9 -3
  14. package/dist/lib/bundler/config.cjs.js +20 -138
  15. package/dist/lib/bundler/linkWorkspaces.cjs.js +31 -0
  16. package/dist/lib/cache/SuccessCache.cjs.js +70 -0
  17. package/dist/lib/packager/createDistWorkspace.cjs.js +3 -3
  18. package/dist/lib/{experimental/startBackendExperimental.cjs.js → runner/runBackend.cjs.js} +6 -5
  19. package/dist/packages/backend-defaults/package.json.cjs.js +1 -1
  20. package/dist/packages/backend-plugin-api/package.json.cjs.js +1 -1
  21. package/dist/packages/backend-test-utils/package.json.cjs.js +1 -1
  22. package/dist/packages/catalog-client/package.json.cjs.js +1 -1
  23. package/dist/packages/cli/package.json.cjs.js +2 -4
  24. package/dist/packages/core-components/package.json.cjs.js +1 -1
  25. package/dist/packages/dev-utils/package.json.cjs.js +1 -1
  26. package/dist/plugins/auth-backend/package.json.cjs.js +1 -1
  27. package/dist/plugins/auth-backend-module-guest-provider/package.json.cjs.js +1 -1
  28. package/dist/plugins/catalog-node/package.json.cjs.js +1 -1
  29. package/dist/plugins/scaffolder-node/package.json.cjs.js +1 -1
  30. package/dist/plugins/scaffolder-node-test-utils/package.json.cjs.js +1 -1
  31. package/package.json +28 -30
  32. package/dist/lib/bundler/LinkedPackageResolvePlugin.cjs.js +0 -47
  33. package/dist/lib/bundler/backend.cjs.js +0 -36
  34. /package/dist/lib/{experimental → ipc}/IpcServer.cjs.js +0 -0
  35. /package/dist/lib/{experimental → ipc}/ServerDataStore.cjs.js +0 -0
@@ -1,28 +1,25 @@
1
1
  'use strict';
2
2
 
3
3
  var fs = require('fs-extra');
4
- require('webpack');
4
+ require('yn');
5
5
  require('path');
6
+ require('webpack');
7
+ require('react-dev-utils/FileSizeReporter');
8
+ require('react-dev-utils/formatWebpackMessages');
6
9
  require('chalk');
7
10
  require('eslint-webpack-plugin');
8
11
  require('fork-ts-checker-webpack-plugin');
9
12
  require('html-webpack-plugin');
10
13
  require('@module-federation/enhanced/webpack');
11
- require('@backstage/cli-common');
12
14
  require('react-dev-utils/ModuleScopePlugin');
13
- require('run-script-webpack-plugin');
14
15
  require('@pmmmwh/react-refresh-webpack-plugin');
15
16
  var paths = require('../../lib/paths.cjs.js');
16
- require('@manypkg/get-packages');
17
- require('webpack-node-externals');
18
17
  require('../../lib/bundler/optimization.cjs.js');
19
18
  require('lodash/pickBy');
20
19
  require('../../lib/run.cjs.js');
21
20
  require('mini-css-extract-plugin');
22
21
  require('../../lib/version.cjs.js');
23
- require('yn');
24
- require('react-dev-utils/FileSizeReporter');
25
- require('react-dev-utils/formatWebpackMessages');
22
+ require('@manypkg/get-packages');
26
23
  require('../../lib/bundler/packageDetection.cjs.js');
27
24
  var moduleFederation = require('../../lib/bundler/moduleFederation.cjs.js');
28
25
  var server = require('../../lib/bundler/server.cjs.js');
@@ -35,6 +32,7 @@ async function startFrontend(options) {
35
32
  configPaths: options.configPaths,
36
33
  verifyVersions: options.verifyVersions,
37
34
  skipOpenBrowser: options.skipOpenBrowser,
35
+ linkedWorkspace: options.linkedWorkspace,
38
36
  moduleFederation: moduleFederation.getModuleFederationOptions(
39
37
  name,
40
38
  options.isModuleFederationRemote
@@ -160,7 +160,10 @@ var bump = async (opts) => {
160
160
  });
161
161
  console.log();
162
162
  if (pattern === DEFAULT_PATTERN_GLOB) {
163
- await bumpBackstageJsonVersion(releaseManifest.releaseVersion);
163
+ await bumpBackstageJsonVersion(
164
+ releaseManifest.releaseVersion,
165
+ hasYarnPlugin
166
+ );
164
167
  } else {
165
168
  console.log(
166
169
  chalk__default.default.yellow(
@@ -306,7 +309,7 @@ async function getBackstageJson() {
306
309
  throw e;
307
310
  });
308
311
  }
309
- async function bumpBackstageJsonVersion(version) {
312
+ async function bumpBackstageJsonVersion(version, useYarnPlugin) {
310
313
  const backstageJson = await getBackstageJson();
311
314
  const prevVersion = backstageJson?.version;
312
315
  if (prevVersion === version) {
@@ -316,7 +319,10 @@ async function bumpBackstageJsonVersion(version) {
316
319
  if (prevVersion) {
317
320
  const from = encodeURIComponent(prevVersion);
318
321
  const to = encodeURIComponent(version);
319
- const link = `https://backstage.github.io/upgrade-helper/?from=${from}&to=${to}`;
322
+ let link = `https://backstage.github.io/upgrade-helper/?from=${from}&to=${to}`;
323
+ if (useYarnPlugin) {
324
+ link += "&yarnPlugin=1";
325
+ }
320
326
  console.log(
321
327
  yellow(
322
328
  `Upgraded from release ${green(prevVersion)} to ${green(
@@ -7,23 +7,18 @@ var ESLintPlugin = require('eslint-webpack-plugin');
7
7
  var ForkTsCheckerWebpackPlugin = require('fork-ts-checker-webpack-plugin');
8
8
  var HtmlWebpackPlugin = require('html-webpack-plugin');
9
9
  var webpack = require('@module-federation/enhanced/webpack');
10
- var LinkedPackageResolvePlugin = require('./LinkedPackageResolvePlugin.cjs.js');
11
10
  var ModuleScopePlugin = require('react-dev-utils/ModuleScopePlugin');
12
- var runScriptWebpackPlugin = require('run-script-webpack-plugin');
13
11
  var ReactRefreshPlugin = require('@pmmmwh/react-refresh-webpack-plugin');
14
12
  var paths = require('../paths.cjs.js');
15
13
  var fs = require('fs-extra');
16
- var getPackages = require('@manypkg/get-packages');
17
- var cliCommon = require('@backstage/cli-common');
18
- var nodeExternals = require('webpack-node-externals');
19
14
  var optimization = require('./optimization.cjs.js');
20
15
  var pickBy = require('lodash/pickBy');
21
- var entryPoints = require('../entryPoints.cjs.js');
22
16
  var run = require('../run.cjs.js');
23
17
  var transforms = require('./transforms.cjs.js');
24
18
  var version = require('../version.cjs.js');
25
19
  var yn = require('yn');
26
20
  var hasReactDomClient = require('./hasReactDomClient.cjs.js');
21
+ var linkWorkspaces = require('./linkWorkspaces.cjs.js');
27
22
 
28
23
  function _interopDefaultCompat (e) { return e && typeof e === 'object' && 'default' in e ? e : { default: e }; }
29
24
 
@@ -35,7 +30,6 @@ var HtmlWebpackPlugin__default = /*#__PURE__*/_interopDefaultCompat(HtmlWebpackP
35
30
  var ModuleScopePlugin__default = /*#__PURE__*/_interopDefaultCompat(ModuleScopePlugin);
36
31
  var ReactRefreshPlugin__default = /*#__PURE__*/_interopDefaultCompat(ReactRefreshPlugin);
37
32
  var fs__default = /*#__PURE__*/_interopDefaultCompat(fs);
38
- var nodeExternals__default = /*#__PURE__*/_interopDefaultCompat(nodeExternals);
39
33
  var pickBy__default = /*#__PURE__*/_interopDefaultCompat(pickBy);
40
34
  var yn__default = /*#__PURE__*/_interopDefaultCompat(yn);
41
35
 
@@ -84,7 +78,7 @@ async function readBuildInfo() {
84
78
  commit: commit ?? "unknown"
85
79
  };
86
80
  }
87
- async function createConfig(paths$1, options) {
81
+ async function createConfig(paths, options) {
88
82
  const {
89
83
  checksEnabled,
90
84
  isDev,
@@ -94,8 +88,6 @@ async function createConfig(paths$1, options) {
94
88
  rspack
95
89
  } = options;
96
90
  const { plugins, loaders } = transforms.transforms(options);
97
- const { packages } = await getPackages.getPackages(paths.paths.targetDir);
98
- const externalPkgs = packages.filter((p) => !cliCommon.isChildPath(paths$1.root, p.dir));
99
91
  const validBaseUrl = resolveBaseUrl(frontendConfig, moduleFederation);
100
92
  let publicPath = validBaseUrl.pathname.replace(/\/$/, "");
101
93
  if (publicSubPath) {
@@ -124,10 +116,10 @@ async function createConfig(paths$1, options) {
124
116
  if (checksEnabled) {
125
117
  plugins.push(
126
118
  new ForkTsCheckerWebpackPlugin__default.default({
127
- typescript: { configFile: paths$1.targetTsConfig, memoryLimit: 4096 }
119
+ typescript: { configFile: paths.targetTsConfig, memoryLimit: 4096 }
128
120
  }),
129
121
  new ESLintPlugin__default.default({
130
- context: paths$1.targetPath,
122
+ context: paths.targetPath,
131
123
  files: ["**/*.(ts|tsx|mts|cts|js|jsx|mjs|cjs)"]
132
124
  })
133
125
  );
@@ -146,7 +138,7 @@ async function createConfig(paths$1, options) {
146
138
  meta: {
147
139
  "backstage-app-mode": options?.appMode ?? "public"
148
140
  },
149
- template: paths$1.targetHtml,
141
+ template: paths.targetHtml,
150
142
  templateParameters: {
151
143
  publicPath,
152
144
  config: frontendConfig
@@ -163,7 +155,7 @@ async function createConfig(paths$1, options) {
163
155
  minify: false,
164
156
  publicPath: "<%= publicPath %>",
165
157
  filename: "index.html.tmpl",
166
- template: `raw-loader!${paths$1.targetHtml}`
158
+ template: `${require.resolve("raw-loader")}!${paths.targetHtml}`
167
159
  })
168
160
  );
169
161
  }
@@ -175,7 +167,7 @@ async function createConfig(paths$1, options) {
175
167
  ...isRemote && {
176
168
  filename: "remoteEntry.js",
177
169
  exposes: {
178
- ".": paths$1.targetEntry
170
+ ".": paths.targetEntry
179
171
  }
180
172
  },
181
173
  name: options.moduleFederation.name,
@@ -245,6 +237,14 @@ async function createConfig(paths$1, options) {
245
237
  "process.env.HAS_REACT_DOM_CLIENT": JSON.stringify(hasReactDomClient.hasReactDomClient())
246
238
  })
247
239
  );
240
+ if (options.linkedWorkspace) {
241
+ plugins.push(
242
+ ...await linkWorkspaces.createWorkspaceLinkingPlugins(
243
+ bundler,
244
+ options.linkedWorkspace
245
+ )
246
+ );
247
+ }
248
248
  const reactRefreshFiles = rspack ? [] : [
249
249
  require.resolve(
250
250
  "@pmmmwh/react-refresh-webpack-plugin/lib/runtime/RefreshUtils.js"
@@ -297,11 +297,11 @@ async function createConfig(paths$1, options) {
297
297
  // we check the gzip size instead
298
298
  },
299
299
  devtool: isDev ? "eval-cheap-module-source-map" : "source-map",
300
- context: paths$1.targetPath,
300
+ context: paths.targetPath,
301
301
  entry: [
302
302
  require.resolve("@backstage/cli/config/webpack-public-path"),
303
303
  ...options.additionalEntryPoints ?? [],
304
- paths$1.targetEntry
304
+ paths.targetEntry
305
305
  ],
306
306
  resolve: {
307
307
  extensions: [".ts", ".tsx", ".mjs", ".js", ".jsx", ".json", ".wasm"],
@@ -325,10 +325,9 @@ async function createConfig(paths$1, options) {
325
325
  // FIXME: see also https://github.com/web-infra-dev/rspack/issues/3408
326
326
  ...!rspack && {
327
327
  plugins: [
328
- new LinkedPackageResolvePlugin.LinkedPackageResolvePlugin(paths$1.rootNodeModules, externalPkgs),
329
328
  new ModuleScopePlugin__default.default(
330
- [paths$1.targetSrc, paths$1.targetDev],
331
- [paths$1.targetPackageJson, ...reactRefreshFiles]
329
+ [paths.targetSrc, paths.targetDev],
330
+ [paths.targetPackageJson, ...reactRefreshFiles]
332
331
  )
333
332
  ]
334
333
  }
@@ -338,7 +337,7 @@ async function createConfig(paths$1, options) {
338
337
  },
339
338
  output: {
340
339
  uniqueName: options.moduleFederation?.name,
341
- path: paths$1.targetDist,
340
+ path: paths.targetDist,
342
341
  publicPath: options.moduleFederation?.mode === "remote" ? "auto" : `${publicPath}/`,
343
342
  filename: isDev ? "[name].js" : "static/[name].[fullhash:8].js",
344
343
  chunkFilename: isDev ? "[name].chunk.js" : "static/[name].[chunkhash:8].chunk.js",
@@ -367,124 +366,7 @@ async function createConfig(paths$1, options) {
367
366
  }
368
367
  };
369
368
  }
370
- async function createBackendConfig(paths$1, options) {
371
- const { checksEnabled, isDev } = options;
372
- const { packages } = await getPackages.getPackages(paths.paths.targetDir);
373
- const localPackageEntryPoints = packages.flatMap((p) => {
374
- const entryPoints$1 = entryPoints.readEntryPoints(p.packageJson);
375
- return entryPoints$1.map((e) => path.posix.join(p.packageJson.name, e.mount));
376
- });
377
- const moduleDirs = packages.map((p) => path.resolve(p.dir, "node_modules"));
378
- const externalPkgs = packages.filter((p) => !cliCommon.isChildPath(paths$1.root, p.dir));
379
- const { loaders } = transforms.transforms({ ...options, isBackend: true });
380
- const runScriptNodeArgs = new Array();
381
- if (options.inspectEnabled) {
382
- const inspect = typeof options.inspectEnabled === "string" ? `--inspect=${options.inspectEnabled}` : "--inspect";
383
- runScriptNodeArgs.push(inspect);
384
- } else if (options.inspectBrkEnabled) {
385
- const inspect = typeof options.inspectBrkEnabled === "string" ? `--inspect-brk=${options.inspectBrkEnabled}` : "--inspect-brk";
386
- runScriptNodeArgs.push(inspect);
387
- }
388
- if (options.require) {
389
- runScriptNodeArgs.push(`--require=${options.require}`);
390
- }
391
- return {
392
- mode: isDev ? "development" : "production",
393
- profile: false,
394
- ...isDev ? {
395
- watch: true,
396
- watchOptions: {
397
- ignored: /node_modules\/(?!\@backstage)/
398
- }
399
- } : {},
400
- externals: [
401
- nodeExternalsWithResolve({
402
- modulesDir: paths$1.rootNodeModules,
403
- additionalModuleDirs: moduleDirs,
404
- allowlist: ["webpack/hot/poll?100", ...localPackageEntryPoints]
405
- })
406
- ],
407
- target: "node",
408
- node: {
409
- /* eslint-disable-next-line no-restricted-syntax */
410
- __dirname: true,
411
- __filename: true,
412
- global: true
413
- },
414
- bail: false,
415
- performance: {
416
- hints: false
417
- // we check the gzip size instead
418
- },
419
- devtool: isDev ? "eval-cheap-module-source-map" : "source-map",
420
- context: paths$1.targetPath,
421
- entry: [
422
- "webpack/hot/poll?100",
423
- paths$1.targetRunFile ? paths$1.targetRunFile : paths$1.targetEntry
424
- ],
425
- resolve: {
426
- extensions: [".ts", ".mjs", ".js", ".json"],
427
- mainFields: ["main"],
428
- modules: [paths$1.rootNodeModules, ...moduleDirs],
429
- plugins: [
430
- new LinkedPackageResolvePlugin.LinkedPackageResolvePlugin(paths$1.rootNodeModules, externalPkgs),
431
- new ModuleScopePlugin__default.default(
432
- [paths$1.targetSrc, paths$1.targetDev],
433
- [paths$1.targetPackageJson]
434
- )
435
- ]
436
- },
437
- module: {
438
- rules: loaders
439
- },
440
- output: {
441
- path: paths$1.targetDist,
442
- filename: isDev ? "[name].js" : "[name].[hash:8].js",
443
- chunkFilename: isDev ? "[name].chunk.js" : "[name].[chunkhash:8].chunk.js",
444
- ...isDev ? {
445
- devtoolModuleFilenameTemplate: (info) => `file:///${path.resolve(info.absoluteResourcePath).replace(
446
- /\\/g,
447
- "/"
448
- )}`
449
- } : {}
450
- },
451
- plugins: [
452
- new runScriptWebpackPlugin.RunScriptWebpackPlugin({
453
- name: "main.js",
454
- nodeArgs: runScriptNodeArgs.length > 0 ? runScriptNodeArgs : void 0,
455
- args: process.argv.slice(3)
456
- // drop `node backstage-cli backend:dev`
457
- }),
458
- new webpack__default.default.HotModuleReplacementPlugin(),
459
- ...checksEnabled ? [
460
- new ForkTsCheckerWebpackPlugin__default.default({
461
- typescript: { configFile: paths$1.targetTsConfig }
462
- }),
463
- new ESLintPlugin__default.default({
464
- files: ["**/*.(ts|tsx|mts|cts|js|jsx|mjs|cjs)"]
465
- })
466
- ] : []
467
- ]
468
- };
469
- }
470
- function nodeExternalsWithResolve(options) {
471
- let currentContext;
472
- const externals = nodeExternals__default.default({
473
- ...options,
474
- importType(request) {
475
- const resolved = require.resolve(request, {
476
- paths: [currentContext]
477
- });
478
- return `commonjs ${resolved}`;
479
- }
480
- });
481
- return ({ context, request }, callback) => {
482
- currentContext = context;
483
- return externals(context, request, callback);
484
- };
485
- }
486
369
 
487
- exports.createBackendConfig = createBackendConfig;
488
370
  exports.createConfig = createConfig;
489
371
  exports.resolveBaseUrl = resolveBaseUrl;
490
372
  exports.resolveEndpoint = resolveEndpoint;
@@ -0,0 +1,31 @@
1
+ 'use strict';
2
+
3
+ var path = require('path');
4
+ var getPackages = require('@manypkg/get-packages');
5
+ var paths = require('../paths.cjs.js');
6
+
7
+ async function createWorkspaceLinkingPlugins(bundler, workspace) {
8
+ const { packages: linkedPackages, root: linkedRoot } = await getPackages.getPackages(
9
+ workspace
10
+ );
11
+ const replacementRegex = new RegExp(
12
+ `^(?:${linkedPackages.map((pkg) => pkg.packageJson.name).join("|")})(?:/.*)?$`
13
+ );
14
+ return [
15
+ // Any imports of a package that is present in the linked workspace will
16
+ // be redirected to be resolved within the context of the linked workspace
17
+ new bundler.NormalModuleReplacementPlugin(replacementRegex, (resource) => {
18
+ resource.context = linkedRoot.dir;
19
+ }),
20
+ // react and react-dom are always resolved from the target directory
21
+ // Note: this often requires that the linked and target workspace use the same versions of React
22
+ new bundler.NormalModuleReplacementPlugin(/^react(?:-dom)?$/, (resource) => {
23
+ if (!path.relative(linkedRoot.dir, resource.context).startsWith("..")) {
24
+ resource.context = paths.paths.targetDir;
25
+ }
26
+ })
27
+ ];
28
+ }
29
+
30
+ exports.createWorkspaceLinkingPlugins = createWorkspaceLinkingPlugins;
31
+ //# sourceMappingURL=linkWorkspaces.cjs.js.map
@@ -0,0 +1,70 @@
1
+ 'use strict';
2
+
3
+ var fs = require('fs-extra');
4
+ var node_path = require('node:path');
5
+
6
+ function _interopDefaultCompat (e) { return e && typeof e === 'object' && 'default' in e ? e : { default: e }; }
7
+
8
+ var fs__default = /*#__PURE__*/_interopDefaultCompat(fs);
9
+
10
+ const DEFAULT_CACHE_BASE_PATH = "node_modules/.cache/backstage-cli";
11
+ const CACHE_MAX_AGE_MS = 7 * 24 * 36e5;
12
+ class SuccessCache {
13
+ #path;
14
+ constructor(name, basePath) {
15
+ this.#path = node_path.resolve(basePath ?? DEFAULT_CACHE_BASE_PATH, name);
16
+ }
17
+ async read() {
18
+ try {
19
+ const stat = await fs__default.default.stat(this.#path);
20
+ if (!stat.isDirectory()) {
21
+ await fs__default.default.rm(this.#path);
22
+ return /* @__PURE__ */ new Set();
23
+ }
24
+ } catch (error) {
25
+ if (error.code === "ENOENT") {
26
+ return /* @__PURE__ */ new Set();
27
+ }
28
+ throw error;
29
+ }
30
+ const items = await fs__default.default.readdir(this.#path);
31
+ const returned = /* @__PURE__ */ new Set();
32
+ const removed = /* @__PURE__ */ new Set();
33
+ const now = Date.now();
34
+ for (const item of items) {
35
+ const split = item.split("_");
36
+ if (split.length !== 2) {
37
+ removed.add(item);
38
+ continue;
39
+ }
40
+ const createdAt = parseInt(split[0], 10);
41
+ if (Number.isNaN(createdAt) || now - createdAt > CACHE_MAX_AGE_MS) {
42
+ removed.add(item);
43
+ } else {
44
+ returned.add(split[1]);
45
+ }
46
+ }
47
+ for (const item of removed) {
48
+ await fs__default.default.unlink(node_path.resolve(this.#path, item));
49
+ }
50
+ return returned;
51
+ }
52
+ async write(newEntries) {
53
+ const now = Date.now();
54
+ await fs__default.default.ensureDir(this.#path);
55
+ const existingItems = await fs__default.default.readdir(this.#path);
56
+ const empty = Buffer.alloc(0);
57
+ for (const key of newEntries) {
58
+ const trimmedItems = existingItems.filter(
59
+ (item) => item.endsWith(`_${key}`)
60
+ );
61
+ for (const trimmedItem of trimmedItems) {
62
+ await fs__default.default.unlink(node_path.resolve(this.#path, trimmedItem));
63
+ }
64
+ await fs__default.default.writeFile(node_path.resolve(this.#path, `${now}_${key}`), empty);
65
+ }
66
+ }
67
+ }
68
+
69
+ exports.SuccessCache = SuccessCache;
70
+ //# sourceMappingURL=SuccessCache.cjs.js.map
@@ -118,7 +118,7 @@ async function createDistWorkspace(packageNames, options = {}) {
118
118
  await moveToDistWorkspace(
119
119
  targetDir,
120
120
  targets,
121
- Boolean(options.alwaysYarnPack),
121
+ Boolean(options.alwaysPack),
122
122
  Boolean(options.enableFeatureDetection)
123
123
  );
124
124
  const files = options.files ?? ["yarn.lock", "package.json"];
@@ -150,10 +150,10 @@ const FAST_PACK_SCRIPTS = [
150
150
  "backstage-cli prepack",
151
151
  "backstage-cli package prepack"
152
152
  ];
153
- async function moveToDistWorkspace(workspaceDir, localPackages, alwaysYarnPack, enableFeatureDetection) {
153
+ async function moveToDistWorkspace(workspaceDir, localPackages, alwaysPack, enableFeatureDetection) {
154
154
  const [fastPackPackages, slowPackPackages] = partition__default.default(
155
155
  localPackages,
156
- (pkg) => !alwaysYarnPack && FAST_PACK_SCRIPTS.includes(pkg.packageJson.scripts?.prepack)
156
+ (pkg) => !alwaysPack && FAST_PACK_SCRIPTS.includes(pkg.packageJson.scripts?.prepack)
157
157
  );
158
158
  const featureDetectionProject = fastPackPackages.length > 0 && enableFeatureDetection ? await typeDistProject.createTypeDistProject() : void 0;
159
159
  await Promise.all(
@@ -2,8 +2,8 @@
2
2
 
3
3
  var chokidar = require('chokidar');
4
4
  var ctrlcWindows = require('ctrlc-windows');
5
- var IpcServer = require('./IpcServer.cjs.js');
6
- var ServerDataStore = require('./ServerDataStore.cjs.js');
5
+ var IpcServer = require('../ipc/IpcServer.cjs.js');
6
+ var ServerDataStore = require('../ipc/ServerDataStore.cjs.js');
7
7
  var debounce = require('lodash/debounce');
8
8
  var url = require('url');
9
9
  var path = require('path');
@@ -21,7 +21,7 @@ const loaderArgs = [
21
21
  require.resolve("@backstage/cli/config/nodeTransform.cjs")
22
22
  // TODO: Support modules, although there's currently no way to load them since import() is transpiled tp require()
23
23
  ];
24
- async function startBackendExperimental(options) {
24
+ async function runBackend(options) {
25
25
  const envEnv = process.env;
26
26
  if (!envEnv.NODE_ENV) {
27
27
  envEnv.NODE_ENV = "development";
@@ -77,6 +77,7 @@ async function startBackendExperimental(options) {
77
77
  stdio: ["ignore", "inherit", "inherit", "ipc"],
78
78
  env: {
79
79
  ...process.env,
80
+ BACKSTAGE_CLI_LINKED_WORKSPACE: options.linkedWorkspace,
80
81
  BACKSTAGE_CLI_CHANNEL: "1",
81
82
  ESBK_TSCONFIG_PATH: paths.paths.resolveTargetRoot("tsconfig.json")
82
83
  },
@@ -124,5 +125,5 @@ async function startBackendExperimental(options) {
124
125
  return () => exitPromise;
125
126
  }
126
127
 
127
- exports.startBackendExperimental = startBackendExperimental;
128
- //# sourceMappingURL=startBackendExperimental.cjs.js.map
128
+ exports.runBackend = runBackend;
129
+ //# sourceMappingURL=runBackend.cjs.js.map
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- var version = "0.5.1";
3
+ var version = "0.5.3-next.0";
4
4
 
5
5
  exports.version = version;
6
6
  //# sourceMappingURL=package.json.cjs.js.map
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- var version = "1.0.1";
3
+ var version = "1.0.2-next.0";
4
4
 
5
5
  exports.version = version;
6
6
  //# sourceMappingURL=package.json.cjs.js.map
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- var version = "1.0.1";
3
+ var version = "1.0.3-next.0";
4
4
 
5
5
  exports.version = version;
6
6
  //# sourceMappingURL=package.json.cjs.js.map
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- var version = "1.7.1";
3
+ var version = "1.8.0-next.0";
4
4
 
5
5
  exports.version = version;
6
6
  //# sourceMappingURL=package.json.cjs.js.map
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- var version = "0.28.0";
3
+ var version = "0.29.0-next.0";
4
4
  var dependencies = {
5
5
  "@backstage/catalog-model": "workspace:^",
6
6
  "@backstage/cli-common": "workspace:^",
@@ -101,7 +101,6 @@ var dependencies = {
101
101
  "rollup-plugin-esbuild": "^6.1.1",
102
102
  "rollup-plugin-postcss": "^4.0.0",
103
103
  "rollup-pluginutils": "^2.8.2",
104
- "run-script-webpack-plugin": "^0.2.0",
105
104
  semver: "^7.5.3",
106
105
  "style-loader": "^3.3.1",
107
106
  sucrase: "^3.20.2",
@@ -110,9 +109,8 @@ var dependencies = {
110
109
  "terser-webpack-plugin": "^5.1.3",
111
110
  "ts-morph": "^23.0.0",
112
111
  util: "^0.12.3",
113
- webpack: "^5.70.0",
112
+ webpack: "^5.94.0",
114
113
  "webpack-dev-server": "^5.0.0",
115
- "webpack-node-externals": "^3.0.0",
116
114
  yaml: "^2.0.0",
117
115
  yargs: "^16.2.0",
118
116
  "yml-loader": "^2.1.0",
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- var version = "0.15.1";
3
+ var version = "0.16.0-next.0";
4
4
 
5
5
  exports.version = version;
6
6
  //# sourceMappingURL=package.json.cjs.js.map
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- var version = "1.1.2";
3
+ var version = "1.1.3-next.0";
4
4
 
5
5
  exports.version = version;
6
6
  //# sourceMappingURL=package.json.cjs.js.map
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- var version = "0.23.1";
3
+ var version = "0.24.0-next.0";
4
4
 
5
5
  exports.version = version;
6
6
  //# sourceMappingURL=package.json.cjs.js.map
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- var version = "0.2.1";
3
+ var version = "0.2.2-next.0";
4
4
 
5
5
  exports.version = version;
6
6
  //# sourceMappingURL=package.json.cjs.js.map
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- var version = "1.13.1";
3
+ var version = "1.14.0-next.0";
4
4
 
5
5
  exports.version = version;
6
6
  //# sourceMappingURL=package.json.cjs.js.map
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- var version = "0.5.0";
3
+ var version = "0.5.1-next.0";
4
4
 
5
5
  exports.version = version;
6
6
  //# sourceMappingURL=package.json.cjs.js.map
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- var version = "0.1.13";
3
+ var version = "0.1.15-next.0";
4
4
 
5
5
  exports.version = version;
6
6
  //# sourceMappingURL=package.json.cjs.js.map