@backstage/cli 0.35.3 → 0.35.4-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 (77) hide show
  1. package/CHANGELOG.md +40 -3
  2. package/bin/backstage-cli +4 -2
  3. package/config/eslint-factory.js +2 -2
  4. package/config/jest.js +3 -3
  5. package/config/jestFileTransform.js +1 -1
  6. package/config/jestRejectNetworkRequests.js +2 -2
  7. package/config/jestSucraseTransform.js +1 -1
  8. package/config/jestYamlTransform.js +1 -1
  9. package/config/nodeTransform.cjs +3 -3
  10. package/config/nodeTransformHooks.mjs +4 -4
  11. package/dist/lib/cache/SuccessCache.cjs.js +5 -5
  12. package/dist/lib/entryPoints.cjs.js +5 -3
  13. package/dist/lib/parallel.cjs.js +4 -4
  14. package/dist/lib/typeDistProject.cjs.js +1 -1
  15. package/dist/modules/build/commands/package/build/command.cjs.js +6 -0
  16. package/dist/modules/build/commands/package/start/resolveLinkedWorkspace.cjs.js +1 -1
  17. package/dist/modules/build/commands/package/start/startBackend.cjs.js +1 -1
  18. package/dist/modules/build/commands/package/start/startFrontend.cjs.js +1 -1
  19. package/dist/modules/build/commands/package/start/startPackage.cjs.js +1 -1
  20. package/dist/modules/build/commands/repo/build.cjs.js +1 -1
  21. package/dist/modules/build/commands/repo/start.cjs.js +3 -3
  22. package/dist/modules/build/lib/buildBackend.cjs.js +22 -4
  23. package/dist/modules/build/lib/buildFrontend.cjs.js +1 -1
  24. package/dist/modules/build/lib/builder/config.cjs.js +4 -3
  25. package/dist/modules/build/lib/builder/packager.cjs.js +3 -2
  26. package/dist/modules/build/lib/builder/plugins.cjs.js +36 -1
  27. package/dist/modules/build/lib/bundler/bundle.cjs.js +1 -1
  28. package/dist/modules/build/lib/bundler/config.cjs.js +1 -1
  29. package/dist/modules/build/lib/bundler/linkWorkspaces.cjs.js +1 -1
  30. package/dist/modules/build/lib/bundler/packageDetection.cjs.js +2 -2
  31. package/dist/modules/build/lib/bundler/paths.cjs.js +1 -1
  32. package/dist/modules/build/lib/bundler/server.cjs.js +1 -1
  33. package/dist/modules/build/lib/packager/createDistWorkspace.cjs.js +23 -5
  34. package/dist/modules/build/lib/packager/productionPack.cjs.js +5 -2
  35. package/dist/modules/build/lib/runner/runBackend.cjs.js +3 -3
  36. package/dist/modules/config/lib/config.cjs.js +1 -1
  37. package/dist/modules/create-github-app/commands/create-github-app/GithubCreateAppServer.cjs.js +1 -1
  38. package/dist/modules/info/commands/info.cjs.js +1 -1
  39. package/dist/modules/lint/commands/repo/lint.cjs.js +5 -5
  40. package/dist/modules/maintenance/commands/repo/clean.cjs.js +1 -1
  41. package/dist/modules/maintenance/commands/repo/fix.cjs.js +62 -16
  42. package/dist/modules/maintenance/commands/repo/list-deprecations.cjs.js +1 -1
  43. package/dist/modules/migrate/commands/packageLintConfigs.cjs.js +1 -1
  44. package/dist/modules/migrate/commands/packageRole.cjs.js +1 -1
  45. package/dist/modules/migrate/commands/packageScripts.cjs.js +1 -1
  46. package/dist/modules/migrate/commands/reactRouterDeps.cjs.js +1 -1
  47. package/dist/modules/migrate/commands/versions/bump.cjs.js +8 -8
  48. package/dist/modules/migrate/commands/versions/migrate.cjs.js +1 -1
  49. package/dist/modules/new/lib/codeowners/codeowners.cjs.js +1 -1
  50. package/dist/modules/new/lib/execution/writeTemplateContents.cjs.js +1 -1
  51. package/dist/modules/new/lib/preparation/loadPortableTemplate.cjs.js +2 -3
  52. package/dist/modules/new/lib/preparation/loadPortableTemplateConfig.cjs.js +4 -4
  53. package/dist/modules/new/lib/preparation/resolvePackageParams.cjs.js +1 -1
  54. package/dist/modules/test/commands/repo/test.cjs.js +2 -2
  55. package/dist/packages/backend-defaults/package.json.cjs.js +1 -1
  56. package/dist/packages/backend-plugin-api/package.json.cjs.js +1 -1
  57. package/dist/packages/backend-test-utils/package.json.cjs.js +1 -1
  58. package/dist/packages/catalog-client/package.json.cjs.js +1 -1
  59. package/dist/packages/cli/package.json.cjs.js +4 -3
  60. package/dist/packages/core-app-api/package.json.cjs.js +1 -1
  61. package/dist/packages/core-components/package.json.cjs.js +1 -1
  62. package/dist/packages/core-plugin-api/package.json.cjs.js +1 -1
  63. package/dist/packages/dev-utils/package.json.cjs.js +1 -1
  64. package/dist/packages/frontend-defaults/package.json.cjs.js +1 -1
  65. package/dist/packages/frontend-plugin-api/package.json.cjs.js +1 -1
  66. package/dist/packages/frontend-test-utils/package.json.cjs.js +1 -1
  67. package/dist/packages/test-utils/package.json.cjs.js +1 -1
  68. package/dist/packages/theme/package.json.cjs.js +1 -1
  69. package/dist/plugins/auth-backend/package.json.cjs.js +1 -1
  70. package/dist/plugins/auth-backend-module-guest-provider/package.json.cjs.js +1 -1
  71. package/dist/plugins/catalog-node/package.json.cjs.js +1 -1
  72. package/dist/plugins/scaffolder-node/package.json.cjs.js +1 -1
  73. package/dist/plugins/scaffolder-node-test-utils/package.json.cjs.js +1 -1
  74. package/dist/wiring/CliInitializer.cjs.js +1 -1
  75. package/package.json +31 -30
  76. package/templates/catalog-provider-module/src/module.ts.hbs +1 -1
  77. package/templates/scaffolder-backend-module/src/module.ts +1 -1
package/CHANGELOG.md CHANGED
@@ -1,12 +1,49 @@
1
1
  # @backstage/cli
2
2
 
3
- ## 0.35.3
3
+ ## 0.35.4-next.2
4
4
 
5
5
  ### Patch Changes
6
6
 
7
- - 5683c85: Bump to latest zod to ensure it has the latest features
7
+ - 20131c5: Added support for CSS exports in package builds. When a package declares a CSS file in its `exports` field (e.g., `"./styles.css": "./src/styles.css"`), the CLI will automatically bundle it during `backstage-cli package build`, resolving any `@import` statements. The export path is rewritten from `src/` to `dist/` at publish time.
8
+
9
+ Fixed `backstage-cli repo fix` to not add `typesVersions` entries for non-script exports like CSS files.
10
+
11
+ - 6ce4a13: Removed `/alpha` from `scaffolderActionsExtensionPoint` import
12
+ - 73351c2: Updated dependency `webpack` to `~5.104.0`.
8
13
  - Updated dependencies
9
- - @backstage/cli-node@0.2.17
14
+ - @backstage/integration@1.20.0-next.2
15
+ - @backstage/cli-node@0.2.18-next.1
16
+ - @backstage/config-loader@1.10.8-next.0
17
+
18
+ ## 0.35.4-next.1
19
+
20
+ ### Patch Changes
21
+
22
+ - 5e3ef57: Added support for the new `peerModules` metadata field in `package.json`. This field allows plugin packages to declare modules that should be installed alongside them for cross-plugin integrations. The field is validated by `backstage-cli repo fix --publish`.
23
+ - Updated dependencies
24
+ - @backstage/integration@1.20.0-next.1
25
+ - @backstage/cli-node@0.2.18-next.1
26
+
27
+ ## 0.35.3-next.0
28
+
29
+ ### Patch Changes
30
+
31
+ - cfd8103: Updated catalog provider module template to use stable catalog extension points from `@backstage/plugin-catalog-node` instead of alpha exports.
32
+ - 7455dae: Use node prefix on native imports
33
+ - 4fc7bf0: Bump to tar v7
34
+ - 122d39c: Completely removed support for the deprecated `app.experimental.packages` configuration. Replace existing usage directly with `app.packages`.
35
+ - 69d880e: Bump to latest zod to ensure it has the latest features
36
+ - Updated dependencies
37
+ - @backstage/config-loader@1.10.8-next.0
38
+ - @backstage/eslint-plugin@0.2.1-next.0
39
+ - @backstage/integration@1.19.3-next.0
40
+ - @backstage/cli-common@0.1.18-next.0
41
+ - @backstage/cli-node@0.2.17-next.0
42
+ - @backstage/catalog-model@1.7.6
43
+ - @backstage/config@1.3.6
44
+ - @backstage/errors@1.2.7
45
+ - @backstage/release-manifests@0.0.13
46
+ - @backstage/types@1.2.2
10
47
 
11
48
  ## 0.35.2
12
49
 
package/bin/backstage-cli CHANGED
@@ -15,11 +15,13 @@
15
15
  * limitations under the License.
16
16
  */
17
17
 
18
- const path = require('path');
18
+ const path = require('node:path');
19
19
 
20
20
  // Figure out whether we're running inside the backstage repo or as an installed dependency
21
21
  /* eslint-disable-next-line no-restricted-syntax */
22
- const isLocal = require('fs').existsSync(path.resolve(__dirname, '../src'));
22
+ const isLocal = require('node:fs').existsSync(
23
+ path.resolve(__dirname, '../src'),
24
+ );
23
25
 
24
26
  if (!isLocal || process.env.BACKSTAGE_E2E_CLI_TEST) {
25
27
  require('..');
@@ -14,7 +14,7 @@
14
14
  * limitations under the License.
15
15
  */
16
16
 
17
- const { join: joinPath } = require('path');
17
+ const { join: joinPath } = require('node:path');
18
18
 
19
19
  /**
20
20
  * Creates a ESLint configuration that extends the base Backstage configuration.
@@ -235,7 +235,7 @@ function createConfigForRole(dir, role, extraConfig = {}) {
235
235
  name: '@mui/material',
236
236
  message: "Please import '@mui/material/...' instead.",
237
237
  },
238
- ...require('module').builtinModules,
238
+ ...require('node:module').builtinModules,
239
239
  ...(extraConfig.restrictedImports ?? []),
240
240
  ],
241
241
  // https://mui.com/material-ui/guides/minimizing-bundle-size/
package/config/jest.js CHANGED
@@ -15,9 +15,9 @@
15
15
  */
16
16
 
17
17
  const fs = require('fs-extra');
18
- const path = require('path');
19
- const crypto = require('crypto');
20
- const glob = require('util').promisify(require('glob'));
18
+ const path = require('node:path');
19
+ const crypto = require('node:crypto');
20
+ const glob = require('node:util').promisify(require('glob'));
21
21
  const { version } = require('../package.json');
22
22
  const paths = require('@backstage/cli-common').findPaths(process.cwd());
23
23
  const {
@@ -14,7 +14,7 @@
14
14
  * limitations under the License.
15
15
  */
16
16
 
17
- const path = require('path');
17
+ const path = require('node:path');
18
18
 
19
19
  module.exports = {
20
20
  process(src, filename) {
@@ -14,8 +14,8 @@
14
14
  * limitations under the License.
15
15
  */
16
16
 
17
- const http = require('http');
18
- const https = require('https');
17
+ const http = require('node:http');
18
+ const https = require('node:https');
19
19
 
20
20
  const errorMessage = 'Network requests are not allowed in tests';
21
21
 
@@ -14,7 +14,7 @@
14
14
  * limitations under the License.
15
15
  */
16
16
 
17
- const { createHash } = require('crypto');
17
+ const { createHash } = require('node:crypto');
18
18
  const { transform } = require('sucrase');
19
19
  const sucrasePkg = require('sucrase/package.json');
20
20
 
@@ -15,7 +15,7 @@
15
15
  */
16
16
 
17
17
  const yaml = require('yaml');
18
- const crypto = require('crypto');
18
+ const crypto = require('node:crypto');
19
19
 
20
20
  function createTransformer(config) {
21
21
  const process = source => {
@@ -14,15 +14,15 @@
14
14
  * limitations under the License.
15
15
  */
16
16
 
17
- const { pathToFileURL } = require('url');
17
+ const { pathToFileURL } = require('node:url');
18
18
  const { transformSync } = require('@swc/core');
19
19
  const { addHook } = require('pirates');
20
- const { Module } = require('module');
20
+ const { Module } = require('node:module');
21
21
 
22
22
  // This hooks into module resolution and overrides imports of packages that
23
23
  // exist in the linked workspace to instead be resolved from the linked workspace.
24
24
  if (process.env.BACKSTAGE_CLI_LINKED_WORKSPACE) {
25
- const { join: joinPath } = require('path');
25
+ const { join: joinPath } = require('node:path');
26
26
  const { getPackagesSync } = require('@manypkg/get-packages');
27
27
  const { packages: linkedPackages, root: linkedRoot } = getPackagesSync(
28
28
  process.env.BACKSTAGE_CLI_LINKED_WORKSPACE,
@@ -14,12 +14,12 @@
14
14
  * limitations under the License.
15
15
  */
16
16
 
17
- import { dirname, extname, resolve as resolvePath } from 'path';
18
- import { fileURLToPath } from 'url';
17
+ import { dirname, extname, resolve as resolvePath } from 'node:path';
18
+ import { fileURLToPath } from 'node:url';
19
19
  import { transformFile } from '@swc/core';
20
20
  import { isBuiltin } from 'node:module';
21
- import { readFile } from 'fs/promises';
22
- import { existsSync } from 'fs';
21
+ import { readFile } from 'node:fs/promises';
22
+ import { existsSync } from 'node:fs';
23
23
 
24
24
  // @ts-check
25
25
 
@@ -1,7 +1,7 @@
1
1
  'use strict';
2
2
 
3
3
  var fs = require('fs-extra');
4
- var node_path = require('node:path');
4
+ var path = require('node:path');
5
5
  var paths = require('../paths.cjs.js');
6
6
 
7
7
  function _interopDefaultCompat (e) { return e && typeof e === 'object' && 'default' in e ? e : { default: e }; }
@@ -21,7 +21,7 @@ class SuccessCache {
21
21
  return input.replaceAll(paths.paths.targetRoot, "");
22
22
  }
23
23
  constructor(name, basePath) {
24
- this.#path = node_path.resolve(basePath ?? DEFAULT_CACHE_BASE_PATH, name);
24
+ this.#path = path.resolve(basePath ?? DEFAULT_CACHE_BASE_PATH, name);
25
25
  }
26
26
  async read() {
27
27
  try {
@@ -54,7 +54,7 @@ class SuccessCache {
54
54
  }
55
55
  }
56
56
  for (const item of removed) {
57
- await fs__default.default.unlink(node_path.resolve(this.#path, item));
57
+ await fs__default.default.unlink(path.resolve(this.#path, item));
58
58
  }
59
59
  return returned;
60
60
  }
@@ -68,9 +68,9 @@ class SuccessCache {
68
68
  (item) => item.endsWith(`_${key}`)
69
69
  );
70
70
  for (const trimmedItem of trimmedItems) {
71
- await fs__default.default.unlink(node_path.resolve(this.#path, trimmedItem));
71
+ await fs__default.default.unlink(path.resolve(this.#path, trimmedItem));
72
72
  }
73
- await fs__default.default.writeFile(node_path.resolve(this.#path, `${now}_${key}`), empty);
73
+ await fs__default.default.writeFile(path.resolve(this.#path, `${now}_${key}`), empty);
74
74
  }
75
75
  }
76
76
  }
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- var path = require('path');
3
+ var path = require('node:path');
4
4
 
5
5
  const defaultIndex = {
6
6
  mount: ".",
@@ -8,17 +8,19 @@ const defaultIndex = {
8
8
  name: "index",
9
9
  ext: ".ts"
10
10
  };
11
+ const SCRIPT_EXTS = [".js", ".jsx", ".ts", ".tsx"];
11
12
  function parseEntryPoint(mount, path$1) {
13
+ const ext = path.extname(path$1);
12
14
  let name = mount;
13
15
  if (name === ".") {
14
16
  name = "index";
15
17
  } else if (name.startsWith("./")) {
16
18
  name = name.slice(2);
17
19
  }
18
- if (name.includes("/")) {
20
+ if (name.includes("/") && SCRIPT_EXTS.includes(ext)) {
19
21
  throw new Error(`Mount point '${mount}' may not contain multiple slashes`);
20
22
  }
21
- return { mount, path: path$1, name, ext: path.extname(path$1) };
23
+ return { mount, path: path$1, name, ext };
22
24
  }
23
25
  function readEntryPoints(pkg) {
24
26
  const exp = pkg.exports;
@@ -1,7 +1,7 @@
1
1
  'use strict';
2
2
 
3
- var os = require('os');
4
- var worker_threads = require('worker_threads');
3
+ var os = require('node:os');
4
+ var node_worker_threads = require('node:worker_threads');
5
5
 
6
6
  function _interopDefaultCompat (e) { return e && typeof e === 'object' && 'default' in e ? e : { default: e }; }
7
7
 
@@ -65,7 +65,7 @@ async function runWorkerQueueThreads(options) {
65
65
  let itemIndex = 0;
66
66
  await Promise.all(
67
67
  Array(threadCount).fill(0).map(async () => {
68
- const thread = new worker_threads.Worker(`(${workerQueueThread})(${workerFactory})`, {
68
+ const thread = new node_worker_threads.Worker(`(${workerQueueThread})(${workerFactory})`, {
69
69
  eval: true,
70
70
  workerData
71
71
  });
@@ -107,7 +107,7 @@ async function runWorkerQueueThreads(options) {
107
107
  return results;
108
108
  }
109
109
  function workerQueueThread(workerFuncFactory) {
110
- const { parentPort, workerData } = require("worker_threads");
110
+ const { parentPort, workerData } = require("node:worker_threads");
111
111
  Promise.resolve().then(() => workerFuncFactory(workerData)).then(
112
112
  (workerFunc) => {
113
113
  parentPort.on("message", async (message) => {
@@ -1,7 +1,7 @@
1
1
  'use strict';
2
2
 
3
3
  var cliNode = require('@backstage/cli-node');
4
- var path = require('path');
4
+ var path = require('node:path');
5
5
  var tsMorph = require('ts-morph');
6
6
  var paths = require('./paths.cjs.js');
7
7
 
@@ -1,5 +1,6 @@
1
1
  'use strict';
2
2
 
3
+ var fs = require('fs-extra');
3
4
  var packager = require('../../../lib/builder/packager.cjs.js');
4
5
  var types = require('../../../lib/builder/types.cjs.js');
5
6
  var role = require('../../../../../lib/role.cjs.js');
@@ -12,6 +13,7 @@ var chalk = require('chalk');
12
13
 
13
14
  function _interopDefaultCompat (e) { return e && typeof e === 'object' && 'default' in e ? e : { default: e }; }
14
15
 
16
+ var fs__default = /*#__PURE__*/_interopDefaultCompat(fs);
15
17
  var chalk__default = /*#__PURE__*/_interopDefaultCompat(chalk);
16
18
 
17
19
  async function command(opts) {
@@ -64,8 +66,12 @@ async function command(opts) {
64
66
  if (roleInfo.output.includes("types")) {
65
67
  outputs.add(types.Output.types);
66
68
  }
69
+ const packageJson = await fs__default.default.readJson(
70
+ paths.paths.resolveTarget("package.json")
71
+ );
67
72
  return packager.buildPackage({
68
73
  outputs,
74
+ packageJson,
69
75
  minify: Boolean(opts.minify),
70
76
  workspacePackages: await cliNode.PackageGraph.listTargetPackages()
71
77
  });
@@ -2,7 +2,7 @@
2
2
 
3
3
  var errors = require('@backstage/errors');
4
4
  var fs = require('fs-extra');
5
- var posix = require('path/posix');
5
+ var posix = require('node:path/posix');
6
6
 
7
7
  function _interopDefaultCompat (e) { return e && typeof e === 'object' && 'default' in e ? e : { default: e }; }
8
8
 
@@ -1,7 +1,7 @@
1
1
  'use strict';
2
2
 
3
3
  var fs = require('fs-extra');
4
- var path = require('path');
4
+ var path = require('node:path');
5
5
  var paths = require('../../../../../lib/paths.cjs.js');
6
6
  var runBackend = require('../../../lib/runner/runBackend.cjs.js');
7
7
 
@@ -1,7 +1,7 @@
1
1
  'use strict';
2
2
 
3
3
  var fs = require('fs-extra');
4
- var path = require('path');
4
+ var path = require('node:path');
5
5
  require('yn');
6
6
  require('@rspack/core');
7
7
  require('react-dev-utils/FileSizeReporter');
@@ -2,7 +2,7 @@
2
2
 
3
3
  var startBackend = require('./startBackend.cjs.js');
4
4
  var startFrontend = require('./startFrontend.cjs.js');
5
- var path = require('path');
5
+ var path = require('node:path');
6
6
  var glob = require('glob');
7
7
 
8
8
  function resolveEntryPath(entrypoint = "dev", targetDir) {
@@ -1,7 +1,7 @@
1
1
  'use strict';
2
2
 
3
3
  var chalk = require('chalk');
4
- var path = require('path');
4
+ var path = require('node:path');
5
5
  var packager = require('../../lib/builder/packager.cjs.js');
6
6
  var paths = require('../../../../lib/paths.cjs.js');
7
7
  var cliNode = require('@backstage/cli-node');
@@ -1,11 +1,11 @@
1
1
  'use strict';
2
2
 
3
3
  var cliNode = require('@backstage/cli-node');
4
- var path = require('path');
4
+ var path = require('node:path');
5
5
  var paths = require('../../../../lib/paths.cjs.js');
6
6
  var resolveLinkedWorkspace = require('../package/start/resolveLinkedWorkspace.cjs.js');
7
7
  var startPackage = require('../package/start/startPackage.cjs.js');
8
- var util = require('util');
8
+ var node_util = require('node:util');
9
9
 
10
10
  const ACCEPTED_PACKAGE_ROLES = [
11
11
  "frontend",
@@ -112,7 +112,7 @@ async function resolvePackageOptions(targetPackages, options) {
112
112
  );
113
113
  return [];
114
114
  }
115
- const { values: parsedOpts } = util.parseArgs({
115
+ const { values: parsedOpts } = node_util.parseArgs({
116
116
  args: startScript.split(" "),
117
117
  strict: false,
118
118
  options: {
@@ -1,8 +1,8 @@
1
1
  'use strict';
2
2
 
3
- var os = require('os');
3
+ var os = require('node:os');
4
4
  var fs = require('fs-extra');
5
- var path = require('path');
5
+ var path = require('node:path');
6
6
  var tar = require('tar');
7
7
  var createDistWorkspace = require('./packager/createDistWorkspace.cjs.js');
8
8
  var parallel = require('../../../lib/parallel.cjs.js');
@@ -12,9 +12,27 @@ var cliNode = require('@backstage/cli-node');
12
12
 
13
13
  function _interopDefaultCompat (e) { return e && typeof e === 'object' && 'default' in e ? e : { default: e }; }
14
14
 
15
+ function _interopNamespaceCompat(e) {
16
+ if (e && typeof e === 'object' && 'default' in e) return e;
17
+ var n = Object.create(null);
18
+ if (e) {
19
+ Object.keys(e).forEach(function (k) {
20
+ if (k !== 'default') {
21
+ var d = Object.getOwnPropertyDescriptor(e, k);
22
+ Object.defineProperty(n, k, d.get ? d : {
23
+ enumerable: true,
24
+ get: function () { return e[k]; }
25
+ });
26
+ }
27
+ });
28
+ }
29
+ n.default = e;
30
+ return Object.freeze(n);
31
+ }
32
+
15
33
  var os__default = /*#__PURE__*/_interopDefaultCompat(os);
16
34
  var fs__default = /*#__PURE__*/_interopDefaultCompat(fs);
17
- var tar__default = /*#__PURE__*/_interopDefaultCompat(tar);
35
+ var tar__namespace = /*#__PURE__*/_interopNamespaceCompat(tar);
18
36
 
19
37
  const BUNDLE_FILE = "bundle.tar.gz";
20
38
  const SKELETON_FILE = "skeleton.tar.gz";
@@ -46,7 +64,7 @@ async function buildBackend(options) {
46
64
  path.resolve(tmpDir, SKELETON_FILE),
47
65
  path.resolve(distDir, SKELETON_FILE)
48
66
  );
49
- await tar__default.default.create(
67
+ await tar__namespace.create(
50
68
  {
51
69
  file: path.resolve(distDir, BUNDLE_FILE),
52
70
  cwd: tmpDir,
@@ -1,7 +1,7 @@
1
1
  'use strict';
2
2
 
3
3
  var fs = require('fs-extra');
4
- var path = require('path');
4
+ var path = require('node:path');
5
5
  var bundle = require('./bundler/bundle.cjs.js');
6
6
  var moduleFederation = require('./bundler/moduleFederation.cjs.js');
7
7
  require('chalk');
@@ -2,8 +2,8 @@
2
2
 
3
3
  var chalk = require('chalk');
4
4
  var fs = require('fs-extra');
5
- var crypto = require('crypto');
6
- var path = require('path');
5
+ var crypto = require('node:crypto');
6
+ var path = require('node:path');
7
7
  var commonjs = require('@rollup/plugin-commonjs');
8
8
  var resolve = require('@rollup/plugin-node-resolve');
9
9
  var postcss = require('rollup-plugin-postcss');
@@ -210,7 +210,8 @@ async function makeRollupConfigs(options) {
210
210
  esbuild__default.default({
211
211
  target: "ES2023",
212
212
  minify: options.minify
213
- })
213
+ }),
214
+ plugins.cssEntryPoints({ entryPoints: entryPoints$1, targetDir })
214
215
  ]
215
216
  });
216
217
  }
@@ -3,7 +3,7 @@
3
3
  var fs = require('fs-extra');
4
4
  var rollup = require('rollup');
5
5
  var chalk = require('chalk');
6
- var path = require('path');
6
+ var path = require('node:path');
7
7
  var paths = require('../../../../lib/paths.cjs.js');
8
8
  var config = require('./config.cjs.js');
9
9
  var types = require('./types.cjs.js');
@@ -90,7 +90,8 @@ const buildPackage = async (options) => {
90
90
  } catch {
91
91
  }
92
92
  const rollupConfigs = await config.makeRollupConfigs(options);
93
- await fs__default.default.remove(path.resolve(options.targetDir ?? paths.paths.targetDir, "dist"));
93
+ const targetDir = options.targetDir ?? paths.paths.targetDir;
94
+ await fs__default.default.remove(path.resolve(targetDir, "dist"));
94
95
  const buildTasks = rollupConfigs.map(rollupBuild);
95
96
  await Promise.all(buildTasks);
96
97
  };
@@ -1,12 +1,16 @@
1
1
  'use strict';
2
2
 
3
3
  var fs = require('fs-extra');
4
- var path = require('path');
4
+ var postcss = require('postcss');
5
+ var postcssImport = require('postcss-import');
6
+ var path = require('node:path');
5
7
  var rollupPluginutils = require('rollup-pluginutils');
6
8
 
7
9
  function _interopDefaultCompat (e) { return e && typeof e === 'object' && 'default' in e ? e : { default: e }; }
8
10
 
9
11
  var fs__default = /*#__PURE__*/_interopDefaultCompat(fs);
12
+ var postcss__default = /*#__PURE__*/_interopDefaultCompat(postcss);
13
+ var postcssImport__default = /*#__PURE__*/_interopDefaultCompat(postcssImport);
10
14
 
11
15
  function forwardFileImports(options) {
12
16
  const filter = rollupPluginutils.createFilter(options.include, options.exclude);
@@ -85,6 +89,37 @@ function forwardFileImports(options) {
85
89
  }
86
90
  };
87
91
  }
92
+ function cssEntryPoints(options) {
93
+ const cssEntries = options.entryPoints.filter((ep) => ep.ext === ".css");
94
+ const generatedFor = /* @__PURE__ */ new Set();
95
+ return {
96
+ name: "backstage-css-entry-points",
97
+ async generateBundle(outputOptions, _bundle, isWrite) {
98
+ if (!isWrite) {
99
+ return;
100
+ }
101
+ const dir = outputOptions.dir || path.dirname(outputOptions.file);
102
+ if (generatedFor.has(dir)) {
103
+ return;
104
+ }
105
+ generatedFor.add(dir);
106
+ for (const entryPoint of cssEntries) {
107
+ const sourcePath = path.resolve(options.targetDir, entryPoint.path);
108
+ const outputPath = entryPoint.path.replace(/^(\.\/)?src\//, "");
109
+ const source = await fs__default.default.readFile(sourcePath, "utf8");
110
+ const result = await postcss__default.default([postcssImport__default.default()]).process(source, {
111
+ from: sourcePath
112
+ });
113
+ this.emitFile({
114
+ type: "asset",
115
+ fileName: outputPath,
116
+ source: result.css
117
+ });
118
+ }
119
+ }
120
+ };
121
+ }
88
122
 
123
+ exports.cssEntryPoints = cssEntryPoints;
89
124
  exports.forwardFileImports = forwardFileImports;
90
125
  //# sourceMappingURL=plugins.cjs.js.map
@@ -2,7 +2,7 @@
2
2
 
3
3
  var yn = require('yn');
4
4
  var fs = require('fs-extra');
5
- var path = require('path');
5
+ var path = require('node:path');
6
6
  var core = require('@rspack/core');
7
7
  var FileSizeReporter = require('react-dev-utils/FileSizeReporter');
8
8
  var formatWebpackMessages = require('react-dev-utils/formatWebpackMessages');
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- var path = require('path');
3
+ var path = require('node:path');
4
4
  var core = require('@rspack/core');
5
5
  var ESLintRspackPlugin = require('eslint-rspack-plugin');
6
6
  var tsCheckerRspackPlugin = require('ts-checker-rspack-plugin');
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- var path = require('path');
3
+ var path = require('node:path');
4
4
  var getPackages = require('@manypkg/get-packages');
5
5
  var paths = require('../../../../lib/paths.cjs.js');
6
6
 
@@ -4,7 +4,7 @@ var config = require('@backstage/config');
4
4
  var chokidar = require('chokidar');
5
5
  var fs = require('fs-extra');
6
6
  var PQueue = require('p-queue');
7
- var path = require('path');
7
+ var path = require('node:path');
8
8
  var paths = require('../../../../lib/paths.cjs.js');
9
9
 
10
10
  function _interopDefaultCompat (e) { return e && typeof e === 'object' && 'default' in e ? e : { default: e }; }
@@ -15,7 +15,7 @@ var PQueue__default = /*#__PURE__*/_interopDefaultCompat(PQueue);
15
15
 
16
16
  const DETECTED_MODULES_MODULE_NAME = "__backstage-autodetected-plugins__";
17
17
  function readPackageDetectionConfig(config$1) {
18
- const packages = config$1.getOptional("app.packages") ?? config$1.getOptional("app.experimental.packages");
18
+ const packages = config$1.getOptional("app.packages");
19
19
  if (packages === void 0 || packages === null) {
20
20
  return void 0;
21
21
  }
@@ -1,7 +1,7 @@
1
1
  'use strict';
2
2
 
3
3
  var fs = require('fs-extra');
4
- var path = require('path');
4
+ var path = require('node:path');
5
5
  var paths = require('../../../../lib/paths.cjs.js');
6
6
 
7
7
  function _interopDefaultCompat (e) { return e && typeof e === 'object' && 'default' in e ? e : { default: e }; }
@@ -2,7 +2,7 @@
2
2
 
3
3
  var chalk = require('chalk');
4
4
  var fs = require('fs-extra');
5
- var path = require('path');
5
+ var path = require('node:path');
6
6
  var openBrowser = require('react-dev-utils/openBrowser');
7
7
  var core = require('@rspack/core');
8
8
  var devServer = require('@rspack/dev-server');