@backstage/cli 0.18.1 → 0.19.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 (46) hide show
  1. package/CHANGELOG.md +109 -0
  2. package/config/jest.js +54 -4
  3. package/config/jestSwcTransform.js +35 -0
  4. package/dist/cjs/{PackageGraph-7ea22294.cjs.js → PackageGraph-7f6ce640.cjs.js} +2 -2
  5. package/dist/cjs/{build-688edcd3.cjs.js → build-1348e377.cjs.js} +10 -9
  6. package/dist/cjs/{buildBackend-ac6c633b.cjs.js → buildBackend-c6ecd150.cjs.js} +7 -6
  7. package/dist/cjs/{buildWorkspace-76f958f0.cjs.js → buildWorkspace-5a2c7a44.cjs.js} +6 -6
  8. package/dist/cjs/{bump-db89c0f3.cjs.js → bump-03bb3d5a.cjs.js} +7 -13
  9. package/dist/cjs/clean-314d90b0.cjs.js +50 -0
  10. package/dist/cjs/{clean-68c34bfd.cjs.js → clean-6c2e6474.cjs.js} +2 -2
  11. package/dist/cjs/{config-9d64a562.cjs.js → config-0584f4a4.cjs.js} +6 -4
  12. package/dist/cjs/{createDistWorkspace-0412df70.cjs.js → createDistWorkspace-ebaeac2b.cjs.js} +36 -20
  13. package/dist/cjs/{createPlugin-02079f81.cjs.js → createPlugin-bbb0c1ce.cjs.js} +6 -5
  14. package/dist/cjs/{diff-f68eaf29.cjs.js → diff-ebba1180.cjs.js} +2 -2
  15. package/dist/cjs/{docs-1527b730.cjs.js → docs-aae92f2e.cjs.js} +4 -4
  16. package/dist/cjs/{fix-56a6d092.cjs.js → fix-37c5344c.cjs.js} +3 -3
  17. package/dist/cjs/{index-16fe1d27.cjs.js → index-26e52421.cjs.js} +2 -2
  18. package/dist/cjs/{index-025feb83.cjs.js → index-438ca541.cjs.js} +10 -9
  19. package/dist/cjs/{index-b7ce30d9.cjs.js → index-477a1b06.cjs.js} +87 -58
  20. package/dist/cjs/{index-4f8f2562.cjs.js → index-a0a5df42.cjs.js} +13 -9
  21. package/dist/cjs/{info-88431720.cjs.js → info-d8c0e2b2.cjs.js} +3 -3
  22. package/dist/cjs/{install-4d423030.cjs.js → install-0cefc510.cjs.js} +4 -4
  23. package/dist/cjs/{lint-da011116.cjs.js → lint-4260c3e6.cjs.js} +2 -2
  24. package/dist/cjs/{lint-bd7b9e13.cjs.js → lint-c098b94a.cjs.js} +3 -3
  25. package/dist/cjs/{lint-2fd53d5f.cjs.js → lint-df95a247.cjs.js} +4 -4
  26. package/dist/cjs/{list-deprecations-268e1d6b.cjs.js → list-deprecations-91fc7b6c.cjs.js} +3 -3
  27. package/dist/cjs/{create-94a20b19.cjs.js → new-2e629087.cjs.js} +26 -33
  28. package/dist/cjs/{pack-ce12d4b7.cjs.js → pack-c1ade706.cjs.js} +2 -2
  29. package/dist/cjs/{packageLintConfigs-9f3b0766.cjs.js → packageLintConfigs-dd31914f.cjs.js} +4 -4
  30. package/dist/cjs/{packageRole-582e0558.cjs.js → packageRole-4afa588d.cjs.js} +3 -3
  31. package/dist/cjs/{packageRoles-fec3121b.cjs.js → packageRoles-f485bb0b.cjs.js} +2 -2
  32. package/dist/cjs/{packageScripts-04ac9bc2.cjs.js → packageScripts-926909d2.cjs.js} +4 -4
  33. package/dist/cjs/{packages-24759dcb.cjs.js → packages-c8abe608.cjs.js} +3 -3
  34. package/dist/cjs/{paths-13d8625f.cjs.js → paths-73d8c4fd.cjs.js} +75 -40
  35. package/dist/cjs/{print-58fe18ba.cjs.js → print-71f20339.cjs.js} +4 -4
  36. package/dist/cjs/reactRouterDeps-b22fb782.cjs.js +59 -0
  37. package/dist/cjs/{run-f4586ef6.cjs.js → run-274b954a.cjs.js} +2 -2
  38. package/dist/cjs/{schema-65c31be1.cjs.js → schema-28b70f3e.cjs.js} +4 -4
  39. package/dist/cjs/{tasks-16da761b.cjs.js → tasks-ba198fb1.cjs.js} +3 -4
  40. package/dist/cjs/{test-464a46fe.cjs.js → test-130c28c6.cjs.js} +3 -3
  41. package/dist/cjs/{validate-3231ba7d.cjs.js → validate-48f9f572.cjs.js} +4 -4
  42. package/dist/index.cjs.js +1 -1
  43. package/package.json +48 -19
  44. package/templates/default-backend-plugin/package.json.hbs +1 -1
  45. package/templates/default-plugin/package.json.hbs +1 -1
  46. package/config/jestEsmTransform.js +0 -19
package/CHANGELOG.md CHANGED
@@ -1,5 +1,114 @@
1
1
  # @backstage/cli
2
2
 
3
+ ## 0.19.0-next.2
4
+
5
+ ### Patch Changes
6
+
7
+ - 8d886dd33e: The `create-plugin` and `create` commands have both been deprecated in favor of a new `new` command. The `new` command is functionally identical to `create`, but the new naming makes it possible to use as yarn script, since `yarn create` is reserved.
8
+ - 548053614a: Deprecated the `plugin:diff` command. If you wish to keep running similar checks in your project we recommend using bespoke scripts. A useful utility for such scripts is `@manypkg/get-packages`, which helps you enumerate all packages in a monorepo.
9
+ - 513b4dd4ef: The `versions:bump` command will now update dependency ranges in `package.json`, even if the new version is within the current range.
10
+ - 221e951298: Added support for custom certificate for webpack dev server.
11
+ - 934cc34563: Avoid validating the backend configuration schema when loading static configuration for building the frontend.
12
+ - 3d4f5daadf: Remove use of deprecated trimLeft/trimRight
13
+ - 742cb4f3d7: Fix issue when using `.jsx` files inside tests
14
+ - e7600bdb04: Tweaked workspace packaging to not rewrite existing `package.json` files.
15
+ - 1cb078ad9f: Fixed a misconfiguration where all modules where treated as ESM by the React Refresh plugin for Webpack.
16
+ - 1fd4f2746f: Removed internal dependencies on Lerna. It is now no longer necessary to have Lerna installed in a project to use all features of the Backstage CLI.
17
+ - 667d917488: Updated dependency `msw` to `^0.47.0`.
18
+ - 87ec2ba4d6: Updated dependency `msw` to `^0.46.0`.
19
+ - 68c2697077: Added a new `backstage-cli repo clean` command that cleans the repo root and runs the clean script in all packages.
20
+ - Updated dependencies
21
+ - @backstage/config-loader@1.1.4-next.1
22
+ - @backstage/release-manifests@0.0.6-next.1
23
+
24
+ ## 0.19.0-next.1
25
+
26
+ ### Minor Changes
27
+
28
+ - 1fe6823bb5: Updated dependency `eslint-plugin-jest` to `^27.0.0`.
29
+
30
+ Note that this major update to the Jest plugin contains some breaking changes.
31
+ This means that some of your tests may start seeing some new lint errors. [Read
32
+ about them
33
+ here](https://github.com/jest-community/eslint-plugin-jest/blob/main/CHANGELOG.md#2700-2022-08-28).
34
+
35
+ These are mostly possible to fix automatically. You can try to run `yarn backstage-cli repo lint --fix` in your repo root to have most or all of them
36
+ corrected.
37
+
38
+ ### Patch Changes
39
+
40
+ - 817f3196f6: Added a new `migrate react-router-deps` command to aid in the migration to React Router v6 stable.
41
+ - 33fbd9f9a4: Updated dependency `@types/minimatch` to `^5.0.0`.
42
+
43
+ ## 0.18.2-next.0
44
+
45
+ ### Patch Changes
46
+
47
+ - 6ae0f6a719: Switch out `sucrase` for `swc` for transpilation.
48
+
49
+ `sucrase` is a little more relaxed when it comes to supporting the ways of mocking in `jest`. You might have to make some changes to your tests to meet the `jest` standard and spec if your tests seems to start failing.
50
+
51
+ Mocks that look like this are invalid, and they will throw a reference error in line with the `jest` documentation [here on example 3](https://jestjs.io/docs/es6-class-mocks#calling-jestmock-with-the-module-factory-parameter)
52
+
53
+ ```ts
54
+ const mockCommandExists = jest.fn();
55
+ jest.mock('command-exists', () => mockCommandExists);
56
+ ```
57
+
58
+ You might need to update these mocks to look a little like the following to defer the call to the `jest.fn()` spy until the mock is called.
59
+
60
+ ```ts
61
+ const mockCommandExists = jest.fn();
62
+ jest.mock(
63
+ 'command-exists',
64
+ () =>
65
+ (...args: any[]) =>
66
+ commandExists(...args),
67
+ );
68
+ ```
69
+
70
+ Also, imports are immutable. So it means that you might get some errors when trying to use `jest.spyOn` with starred imports. You might see an error like this:
71
+
72
+ ```log
73
+ TypeError: Cannot redefine property: executeFrameHandlerStrategy
74
+ at Function.defineProperty (<anonymous>)
75
+
76
+ 20 | import { AuthResolverContext } from '../types';
77
+ 21 |
78
+ > 22 | const mockFrameHandler = jest.spyOn(
79
+ | ^
80
+ 23 | helpers,
81
+ 24 | 'executeFrameHandlerStrategy',
82
+ 25 | ) as unknown as jest.MockedFunction<
83
+ ```
84
+
85
+ This happens when you try to do `import * as something from './something'` and then `jest.spyOn(something, 'test)`. You will need to add a `jest.mock` call to mock out the required starred import to return `jest.fn()` functions from the start. Something like this fixes the above test:
86
+
87
+ ```ts
88
+ jest.mock('../../helpers', () => ({
89
+ executeFrameHandlerStrategy: jest.fn(),
90
+ }));
91
+ ```
92
+
93
+ You can also remove any occurrence of `hot(App)` and any import of `react-hot-loader` if you're using the that package locally, as all this has now been replaced with [React Refresh](https://www.npmjs.com/package/react-refresh) which you will get out of the box with the new CLI.
94
+
95
+ **Note** If you're experiencing difficulties with running tests after the migration, please reach out to us on Discord to see if we can help, or raise an issue. But in the meantime you can switch back to the existing behaviour by using the following config in your root `package.json`.
96
+
97
+ ```json
98
+ "jest": {
99
+ "transform": {
100
+ "\\.(js|jsx|ts|tsx|mjs|cjs)$": "@backstage/cli/config/jestSucraseTransform.js",
101
+ "\\.(bmp|gif|jpg|jpeg|png|frag|xml|svg|eot|woff|woff2|ttf)$": "@backstage/cli/config/jestFileTransform.js",
102
+ "\\.(yaml)$": "jest-transform-yaml"
103
+ }
104
+ }
105
+ ```
106
+
107
+ - bf5e9030eb: Updated dependency `msw` to `^0.45.0`.
108
+ - Updated dependencies
109
+ - @backstage/config-loader@1.1.4-next.0
110
+ - @backstage/release-manifests@0.0.6-next.0
111
+
3
112
  ## 0.18.1
4
113
 
5
114
  ### Patch Changes
package/config/jest.js CHANGED
@@ -37,6 +37,7 @@ const transformIgnorePattern = [
37
37
  'react-dom',
38
38
  'highlight\\.js',
39
39
  'prismjs',
40
+ 'json-schema',
40
41
  'react-use',
41
42
  'typescript',
42
43
  ].join('|');
@@ -130,10 +131,60 @@ async function getProjectConfig(targetPath, displayName) {
130
131
  },
131
132
 
132
133
  transform: {
133
- '\\.(js|jsx|ts|tsx|mjs|cjs)$': [
134
- require.resolve('./jestSucraseTransform.js'),
134
+ '\\.(mjs|cjs|js)$': [
135
+ require.resolve('./jestSwcTransform'),
135
136
  {
136
- enableSourceMaps: envOptions.enableSourceMaps || envOptions.nextTests,
137
+ sourceMaps: envOptions.enableSourceMaps || envOptions.nextTests,
138
+ jsc: {
139
+ parser: {
140
+ syntax: 'ecmascript',
141
+ },
142
+ },
143
+ },
144
+ ],
145
+ '\\.jsx$': [
146
+ require.resolve('./jestSwcTransform'),
147
+ {
148
+ sourceMaps: envOptions.enableSourceMaps || envOptions.nextTests,
149
+ jsc: {
150
+ parser: {
151
+ syntax: 'ecmascript',
152
+ jsx: true,
153
+ },
154
+ transform: {
155
+ react: {
156
+ runtime: 'automatic',
157
+ },
158
+ },
159
+ },
160
+ },
161
+ ],
162
+ '\\.ts$': [
163
+ require.resolve('./jestSwcTransform'),
164
+ {
165
+ sourceMaps: envOptions.enableSourceMaps || envOptions.nextTests,
166
+ jsc: {
167
+ parser: {
168
+ syntax: 'typescript',
169
+ },
170
+ },
171
+ },
172
+ ],
173
+ '\\.tsx$': [
174
+ require.resolve('./jestSwcTransform'),
175
+ {
176
+ sourceMaps: envOptions.enableSourceMaps || envOptions.nextTests,
177
+ jsc: {
178
+ parser: {
179
+ syntax: 'typescript',
180
+ tsx: true,
181
+ },
182
+ transform: {
183
+ react: {
184
+ runtime: 'automatic',
185
+ },
186
+ },
187
+ },
137
188
  },
138
189
  ],
139
190
  '\\.(bmp|gif|jpg|jpeg|png|frag|xml|svg|eot|woff|woff2|ttf)$':
@@ -149,7 +200,6 @@ async function getProjectConfig(targetPath, displayName) {
149
200
  : undefined,
150
201
 
151
202
  transformIgnorePatterns: [`/node_modules/(?:${transformIgnorePattern})/`],
152
-
153
203
  ...getRoleConfig(closestPkgJson?.backstage?.role),
154
204
  };
155
205
 
@@ -0,0 +1,35 @@
1
+ /*
2
+ * Copyright 2022 The Backstage Authors
3
+ *
4
+ * Licensed under the Apache License, Version 2.0 (the "License");
5
+ * you may not use this file except in compliance with the License.
6
+ * You may obtain a copy of the License at
7
+ *
8
+ * http://www.apache.org/licenses/LICENSE-2.0
9
+ *
10
+ * Unless required by applicable law or agreed to in writing, software
11
+ * distributed under the License is distributed on an "AS IS" BASIS,
12
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ * See the License for the specific language governing permissions and
14
+ * limitations under the License.
15
+ */
16
+ const { createTransformer: createSwcTransformer } = require('@swc/jest');
17
+
18
+ const ESM_REGEX = /\b(?:import|export)\b/;
19
+
20
+ function createTransformer(config) {
21
+ const swcTransformer = createSwcTransformer(config);
22
+ const process = (source, filePath, jestOptions) => {
23
+ if (filePath.endsWith('.js') && !ESM_REGEX.test(source)) {
24
+ return source;
25
+ }
26
+
27
+ return swcTransformer.process(source, filePath, jestOptions);
28
+ };
29
+
30
+ const getCacheKey = swcTransformer.getCacheKey;
31
+
32
+ return { process, getCacheKey };
33
+ }
34
+
35
+ module.exports = { createTransformer };
@@ -2,7 +2,7 @@
2
2
 
3
3
  var path = require('path');
4
4
  var getPackages = require('@manypkg/get-packages');
5
- var index = require('./index-b7ce30d9.cjs.js');
5
+ var index = require('./index-477a1b06.cjs.js');
6
6
  var errors = require('@backstage/errors');
7
7
  var child_process = require('child_process');
8
8
  var util = require('util');
@@ -166,4 +166,4 @@ class PackageGraph extends Map {
166
166
  }
167
167
 
168
168
  exports.PackageGraph = PackageGraph;
169
- //# sourceMappingURL=PackageGraph-7ea22294.cjs.js.map
169
+ //# sourceMappingURL=PackageGraph-7f6ce640.cjs.js.map
@@ -2,17 +2,17 @@
2
2
 
3
3
  var chalk = require('chalk');
4
4
  var path = require('path');
5
- var createDistWorkspace = require('./createDistWorkspace-0412df70.cjs.js');
6
- var PackageGraph = require('./PackageGraph-7ea22294.cjs.js');
5
+ var createDistWorkspace = require('./createDistWorkspace-ebaeac2b.cjs.js');
6
+ var PackageGraph = require('./PackageGraph-7f6ce640.cjs.js');
7
7
  var parallel = require('./parallel-a8f6219c.cjs.js');
8
- var index = require('./index-b7ce30d9.cjs.js');
9
- var packageRoles = require('./packageRoles-fec3121b.cjs.js');
10
- var buildBackend = require('./buildBackend-ac6c633b.cjs.js');
8
+ var index = require('./index-477a1b06.cjs.js');
9
+ var packageRoles = require('./packageRoles-f485bb0b.cjs.js');
10
+ var buildBackend = require('./buildBackend-c6ecd150.cjs.js');
11
11
  require('fs-extra');
12
12
  require('os');
13
13
  require('tar');
14
14
  require('lodash/partition');
15
- require('./run-f4586ef6.cjs.js');
15
+ require('./run-274b954a.cjs.js');
16
16
  require('child_process');
17
17
  require('util');
18
18
  require('@backstage/errors');
@@ -40,8 +40,9 @@ require('html-webpack-plugin');
40
40
  require('react-dev-utils/ModuleScopePlugin');
41
41
  require('run-script-webpack-plugin');
42
42
  require('webpack-node-externals');
43
- require('./paths-13d8625f.cjs.js');
43
+ require('./paths-73d8c4fd.cjs.js');
44
44
  require('mini-css-extract-plugin');
45
+ require('@pmmmwh/react-refresh-webpack-plugin');
45
46
  require('eslint-webpack-plugin');
46
47
  require('lodash/pickBy');
47
48
  require('yn');
@@ -49,7 +50,7 @@ require('react-dev-utils/FileSizeReporter');
49
50
  require('react-dev-utils/formatWebpackMessages');
50
51
  require('webpack-dev-server');
51
52
  require('react-dev-utils/openBrowser');
52
- require('./config-9d64a562.cjs.js');
53
+ require('./config-0584f4a4.cjs.js');
53
54
  require('@backstage/config-loader');
54
55
  require('@backstage/config');
55
56
 
@@ -185,4 +186,4 @@ async function command(opts, cmd) {
185
186
  }
186
187
 
187
188
  exports.command = command;
188
- //# sourceMappingURL=build-688edcd3.cjs.js.map
189
+ //# sourceMappingURL=build-1348e377.cjs.js.map
@@ -10,10 +10,11 @@ require('run-script-webpack-plugin');
10
10
  require('webpack-node-externals');
11
11
  require('@backstage/cli-common');
12
12
  require('@manypkg/get-packages');
13
- var paths = require('./paths-13d8625f.cjs.js');
13
+ var paths = require('./paths-73d8c4fd.cjs.js');
14
14
  require('mini-css-extract-plugin');
15
- require('./index-b7ce30d9.cjs.js');
16
- require('./run-f4586ef6.cjs.js');
15
+ require('@pmmmwh/react-refresh-webpack-plugin');
16
+ require('./index-477a1b06.cjs.js');
17
+ require('./run-274b954a.cjs.js');
17
18
  require('eslint-webpack-plugin');
18
19
  require('lodash/pickBy');
19
20
  var yn = require('yn');
@@ -23,10 +24,10 @@ var chalk = require('chalk');
23
24
  require('webpack-dev-server');
24
25
  require('react-dev-utils/openBrowser');
25
26
  var parallel = require('./parallel-a8f6219c.cjs.js');
26
- var config = require('./config-9d64a562.cjs.js');
27
+ var config = require('./config-0584f4a4.cjs.js');
27
28
  var os = require('os');
28
29
  var tar = require('tar');
29
- var createDistWorkspace = require('./createDistWorkspace-0412df70.cjs.js');
30
+ var createDistWorkspace = require('./createDistWorkspace-ebaeac2b.cjs.js');
30
31
 
31
32
  function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
32
33
 
@@ -194,4 +195,4 @@ async function buildBackend(options) {
194
195
 
195
196
  exports.buildBackend = buildBackend;
196
197
  exports.buildFrontend = buildFrontend;
197
- //# sourceMappingURL=buildBackend-ac6c633b.cjs.js.map
198
+ //# sourceMappingURL=buildBackend-c6ecd150.cjs.js.map
@@ -1,21 +1,21 @@
1
1
  'use strict';
2
2
 
3
3
  var fs = require('fs-extra');
4
- var createDistWorkspace = require('./createDistWorkspace-0412df70.cjs.js');
4
+ var createDistWorkspace = require('./createDistWorkspace-ebaeac2b.cjs.js');
5
5
  require('chalk');
6
6
  require('path');
7
7
  require('os');
8
8
  require('tar');
9
9
  require('lodash/partition');
10
- require('./index-b7ce30d9.cjs.js');
10
+ require('./index-477a1b06.cjs.js');
11
11
  require('commander');
12
12
  require('semver');
13
13
  require('@backstage/cli-common');
14
14
  require('@backstage/errors');
15
- require('./run-f4586ef6.cjs.js');
15
+ require('./run-274b954a.cjs.js');
16
16
  require('child_process');
17
17
  require('util');
18
- require('./PackageGraph-7ea22294.cjs.js');
18
+ require('./PackageGraph-7f6ce640.cjs.js');
19
19
  require('@manypkg/get-packages');
20
20
  require('rollup');
21
21
  require('@rollup/plugin-commonjs');
@@ -30,7 +30,7 @@ require('rollup-pluginutils');
30
30
  require('./svgrTemplate-550efce6.cjs.js');
31
31
  require('./parallel-a8f6219c.cjs.js');
32
32
  require('worker_threads');
33
- require('./packageRoles-fec3121b.cjs.js');
33
+ require('./packageRoles-f485bb0b.cjs.js');
34
34
  require('zod');
35
35
  require('npm-packlist');
36
36
 
@@ -48,4 +48,4 @@ var buildWorkspace = async (dir, packages) => {
48
48
  };
49
49
 
50
50
  exports["default"] = buildWorkspace;
51
- //# sourceMappingURL=buildWorkspace-76f958f0.cjs.js.map
51
+ //# sourceMappingURL=buildWorkspace-5a2c7a44.cjs.js.map
@@ -7,11 +7,11 @@ var semver = require('semver');
7
7
  var minimatch = require('minimatch');
8
8
  var errors = require('@backstage/errors');
9
9
  var path = require('path');
10
- var run = require('./run-f4586ef6.cjs.js');
11
- var index = require('./index-b7ce30d9.cjs.js');
10
+ var run = require('./run-274b954a.cjs.js');
11
+ var index = require('./index-477a1b06.cjs.js');
12
12
  var Lockfile = require('./Lockfile-72b7072e.cjs.js');
13
- var packages = require('./packages-24759dcb.cjs.js');
14
- var lint = require('./lint-bd7b9e13.cjs.js');
13
+ var packages = require('./packages-c8abe608.cjs.js');
14
+ var lint = require('./lint-c098b94a.cjs.js');
15
15
  var cliCommon = require('@backstage/cli-common');
16
16
  var parallel = require('./parallel-a8f6219c.cjs.js');
17
17
  var releaseManifests = require('@backstage/release-manifests');
@@ -85,7 +85,7 @@ var bump = async (opts) => {
85
85
  parallelismFactor: 4,
86
86
  items: dependencyMap.entries(),
87
87
  async worker([name, pkgs]) {
88
- var _a2, _b;
88
+ var _a2;
89
89
  let target;
90
90
  try {
91
91
  target = await findTargetVersion(name);
@@ -97,15 +97,9 @@ var bump = async (opts) => {
97
97
  throw error;
98
98
  }
99
99
  for (const pkg of pkgs) {
100
- if (semver__default["default"].satisfies(target, pkg.range)) {
101
- if (((_a2 = semver__default["default"].minVersion(pkg.range)) == null ? void 0 : _a2.version) !== target) {
102
- unlocked.push({ name, range: pkg.range, target });
103
- }
104
- continue;
105
- }
106
100
  versionBumps.set(
107
101
  pkg.name,
108
- ((_b = versionBumps.get(pkg.name)) != null ? _b : []).concat({
102
+ ((_a2 = versionBumps.get(pkg.name)) != null ? _a2 : []).concat({
109
103
  name,
110
104
  location: pkg.location,
111
105
  range: `^${target}`,
@@ -401,4 +395,4 @@ exports.bumpBackstageJsonVersion = bumpBackstageJsonVersion;
401
395
  exports.createStrictVersionFinder = createStrictVersionFinder;
402
396
  exports.createVersionFinder = createVersionFinder;
403
397
  exports["default"] = bump;
404
- //# sourceMappingURL=bump-db89c0f3.cjs.js.map
398
+ //# sourceMappingURL=bump-03bb3d5a.cjs.js.map
@@ -0,0 +1,50 @@
1
+ 'use strict';
2
+
3
+ var child_process = require('child_process');
4
+ var fs = require('fs-extra');
5
+ var path = require('path');
6
+ var util = require('util');
7
+ var PackageGraph = require('./PackageGraph-7f6ce640.cjs.js');
8
+ var index = require('./index-477a1b06.cjs.js');
9
+ require('@manypkg/get-packages');
10
+ require('@backstage/errors');
11
+ require('commander');
12
+ require('chalk');
13
+ require('semver');
14
+ require('@backstage/cli-common');
15
+
16
+ function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
17
+
18
+ var fs__default = /*#__PURE__*/_interopDefaultLegacy(fs);
19
+
20
+ const execFile = util.promisify(child_process.execFile);
21
+ async function command() {
22
+ const packages = await PackageGraph.PackageGraph.listTargetPackages();
23
+ await fs__default["default"].remove(index.paths.resolveTargetRoot("dist"));
24
+ await fs__default["default"].remove(index.paths.resolveTargetRoot("dist-types"));
25
+ await fs__default["default"].remove(index.paths.resolveTargetRoot("coverage"));
26
+ await Promise.all(
27
+ Array.from(Array(10), async () => {
28
+ var _a;
29
+ while (packages.length > 0) {
30
+ const pkg = packages.pop();
31
+ const cleanScript = (_a = pkg.packageJson.scripts) == null ? void 0 : _a.clean;
32
+ if (cleanScript === "backstage-cli clean" || cleanScript === "backstage-cli package clean") {
33
+ await fs__default["default"].remove(path.resolve(pkg.dir, "dist"));
34
+ await fs__default["default"].remove(path.resolve(pkg.dir, "dist-types"));
35
+ await fs__default["default"].remove(path.resolve(pkg.dir, "coverage"));
36
+ } else if (cleanScript) {
37
+ const result = await execFile("yarn", ["run", "clean"], {
38
+ cwd: pkg.dir,
39
+ shell: true
40
+ });
41
+ process.stdout.write(result.stdout);
42
+ process.stderr.write(result.stderr);
43
+ }
44
+ }
45
+ })
46
+ );
47
+ }
48
+
49
+ exports.command = command;
50
+ //# sourceMappingURL=clean-314d90b0.cjs.js.map
@@ -1,7 +1,7 @@
1
1
  'use strict';
2
2
 
3
3
  var fs = require('fs-extra');
4
- var index = require('./index-b7ce30d9.cjs.js');
4
+ var index = require('./index-477a1b06.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-68c34bfd.cjs.js.map
22
+ //# sourceMappingURL=clean-6c2e6474.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-b7ce30d9.cjs.js');
5
+ var index = require('./index-477a1b06.cjs.js');
6
6
  var getPackages = require('@manypkg/get-packages');
7
- var PackageGraph = require('./PackageGraph-7ea22294.cjs.js');
7
+ var PackageGraph = require('./PackageGraph-7f6ce640.cjs.js');
8
8
 
9
9
  function isValidUrl(url) {
10
10
  try {
@@ -61,11 +61,13 @@ async function loadCliConfig(options) {
61
61
  withDeprecatedKeys: options.withDeprecatedKeys
62
62
  });
63
63
  const frontendConfig = config.ConfigReader.fromConfigs(frontendAppConfigs);
64
+ const fullConfig = config.ConfigReader.fromConfigs(appConfigs);
64
65
  return {
65
66
  schema,
66
67
  appConfigs,
67
68
  frontendConfig,
68
- frontendAppConfigs
69
+ frontendAppConfigs,
70
+ fullConfig
69
71
  };
70
72
  } catch (error) {
71
73
  const maybeSchemaError = error;
@@ -80,4 +82,4 @@ async function loadCliConfig(options) {
80
82
  }
81
83
 
82
84
  exports.loadCliConfig = loadCliConfig;
83
- //# sourceMappingURL=config-9d64a562.cjs.js.map
85
+ //# sourceMappingURL=config-0584f4a4.cjs.js.map
@@ -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-b7ce30d9.cjs.js');
10
- var run = require('./run-f4586ef6.cjs.js');
11
- var PackageGraph = require('./PackageGraph-7ea22294.cjs.js');
9
+ var index = require('./index-477a1b06.cjs.js');
10
+ var run = require('./run-274b954a.cjs.js');
11
+ var PackageGraph = require('./PackageGraph-7f6ce640.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');
@@ -21,7 +21,7 @@ var yaml = require('@rollup/plugin-yaml');
21
21
  var rollupPluginutils = require('rollup-pluginutils');
22
22
  var svgrTemplate = require('./svgrTemplate-550efce6.cjs.js');
23
23
  var parallel = require('./parallel-a8f6219c.cjs.js');
24
- var packageRoles = require('./packageRoles-fec3121b.cjs.js');
24
+ var packageRoles = require('./packageRoles-f485bb0b.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 }; }
@@ -526,14 +526,18 @@ async function copyPackageDist(packageDir, targetDir) {
526
526
  delete pkg.peerDependencies;
527
527
  delete pkg.optionalDependencies;
528
528
  }
529
- await fs__default["default"].writeJson(pkgPath, pkg, { encoding: "utf8", spaces: 2 });
530
- const filePaths = await npmPackList__default["default"]({ path: packageDir });
529
+ const filePaths = await npmPackList__default["default"]({
530
+ path: packageDir,
531
+ packageJsonCache: /* @__PURE__ */ new Map([[path.resolve(packageDir, "package.json"), pkg]])
532
+ });
531
533
  await fs__default["default"].ensureDir(targetDir);
532
534
  for (const filePath of filePaths.sort()) {
533
- await fs__default["default"].copy(
534
- path.resolve(packageDir, filePath),
535
- path.resolve(targetDir, filePath)
536
- );
535
+ const target = path.resolve(targetDir, filePath);
536
+ if (filePath === "package.json") {
537
+ await fs__default["default"].writeJson(target, pkg, { encoding: "utf8", spaces: 2 });
538
+ } else {
539
+ await fs__default["default"].copy(path.resolve(packageDir, filePath), target);
540
+ }
537
541
  }
538
542
  if (publishConfig.alphaTypes) {
539
543
  await writeReleaseStageEntrypoint(pkg, "alpha", targetDir);
@@ -541,13 +545,20 @@ async function copyPackageDist(packageDir, targetDir) {
541
545
  if (publishConfig.betaTypes) {
542
546
  await writeReleaseStageEntrypoint(pkg, "beta", targetDir);
543
547
  }
544
- await fs__default["default"].writeFile(pkgPath, pkgContent, "utf8");
545
548
  }
546
549
 
547
550
  const UNSAFE_PACKAGES = [
548
551
  ...Object.keys(index.dependencies),
549
552
  ...Object.keys(index.devDependencies)
550
553
  ];
554
+ function prefixLogFunc(prefix, out) {
555
+ return (data) => {
556
+ for (const line of data.toString("utf8").split(/\r?\n/)) {
557
+ process[out].write(`${prefix} ${line}
558
+ `);
559
+ }
560
+ };
561
+ }
551
562
  async function createDistWorkspace(packageNames, options = {}) {
552
563
  var _a, _b, _c, _d, _e;
553
564
  const targetDir = (_a = options.targetDir) != null ? _a : await fs__default["default"].mkdtemp(path.resolve(os.tmpdir(), "dist-workspace"));
@@ -576,26 +587,26 @@ async function createDistWorkspace(packageNames, options = {}) {
576
587
  console.warn(
577
588
  `Building ${pkg.packageJson.name} separately because it has no role`
578
589
  );
579
- customBuild.push(pkg.packageJson.name);
590
+ customBuild.push({ dir: pkg.dir, name: pkg.packageJson.name });
580
591
  continue;
581
592
  }
582
593
  const buildScript = (_d = pkg.packageJson.scripts) == null ? void 0 : _d.build;
583
594
  if (!buildScript) {
584
- customBuild.push(pkg.packageJson.name);
595
+ customBuild.push({ dir: pkg.dir, name: pkg.packageJson.name });
585
596
  continue;
586
597
  }
587
598
  if (!buildScript.startsWith("backstage-cli package build")) {
588
599
  console.warn(
589
600
  `Building ${pkg.packageJson.name} separately because it has a custom build script, '${buildScript}'`
590
601
  );
591
- customBuild.push(pkg.packageJson.name);
602
+ customBuild.push({ dir: pkg.dir, name: pkg.packageJson.name });
592
603
  continue;
593
604
  }
594
605
  if (packageRoles.getRoleInfo(role).output.includes("bundle")) {
595
606
  console.warn(
596
607
  `Building ${pkg.packageJson.name} separately because it is a bundled package`
597
608
  );
598
- customBuild.push(pkg.packageJson.name);
609
+ customBuild.push({ dir: pkg.dir, name: pkg.packageJson.name });
599
610
  continue;
600
611
  }
601
612
  const outputs = getOutputsForRole(role);
@@ -612,10 +623,15 @@ async function createDistWorkspace(packageNames, options = {}) {
612
623
  }
613
624
  await buildPackages(standardBuilds);
614
625
  if (customBuild.length > 0) {
615
- const scopeArgs = customBuild.flatMap((name) => ["--scope", name]);
616
- const lernaArgs = options.parallelism && Number.isInteger(options.parallelism) ? ["--concurrency", options.parallelism.toString()] : [];
617
- await run.run("yarn", ["lerna", ...lernaArgs, "run", ...scopeArgs, "build"], {
618
- cwd: index.paths.targetRoot
626
+ await parallel.runParallelWorkers({
627
+ items: customBuild,
628
+ worker: async ({ name, dir }) => {
629
+ await run.run("yarn", ["run", "build"], {
630
+ cwd: dir,
631
+ stdoutLogFunc: prefixLogFunc(`${name}: `, "stdout"),
632
+ stderrLogFunc: prefixLogFunc(`${name}: `, "stderr")
633
+ });
634
+ }
619
635
  });
620
636
  }
621
637
  }
@@ -720,4 +736,4 @@ exports.buildPackage = buildPackage;
720
736
  exports.buildPackages = buildPackages;
721
737
  exports.createDistWorkspace = createDistWorkspace;
722
738
  exports.getOutputsForRole = getOutputsForRole;
723
- //# sourceMappingURL=createDistWorkspace-0412df70.cjs.js.map
739
+ //# sourceMappingURL=createDistWorkspace-ebaeac2b.cjs.js.map