@backstage/cli 0.28.0-next.2 → 0.28.1

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 (52) hide show
  1. package/CHANGELOG.md +59 -0
  2. package/dist/commands/build/buildFrontend.cjs.js +3 -2
  3. package/dist/commands/build/command.cjs.js +5 -2
  4. package/dist/commands/repo/lint.cjs.js +18 -6
  5. package/dist/commands/repo/test.cjs.js +25 -15
  6. package/dist/lib/bundler/bundle.cjs.js +5 -4
  7. package/dist/lib/bundler/config.cjs.js +59 -37
  8. package/dist/lib/bundler/hasReactDomClient.cjs.js +5 -1
  9. package/dist/lib/bundler/optimization.cjs.js +10 -6
  10. package/dist/lib/bundler/server.cjs.js +47 -7
  11. package/dist/lib/bundler/transforms.cjs.js +7 -6
  12. package/dist/lib/version.cjs.js +30 -22
  13. package/dist/packages/backend-defaults/package.json.cjs.js +1 -1
  14. package/dist/packages/backend-plugin-api/package.json.cjs.js +1 -1
  15. package/dist/packages/backend-test-utils/package.json.cjs.js +1 -1
  16. package/dist/packages/catalog-client/package.json.cjs.js +6 -0
  17. package/dist/packages/cli/package.json.cjs.js +14 -2
  18. package/dist/packages/core-app-api/package.json.cjs.js +1 -1
  19. package/dist/packages/core-components/package.json.cjs.js +1 -1
  20. package/dist/packages/core-plugin-api/package.json.cjs.js +1 -1
  21. package/dist/packages/dev-utils/package.json.cjs.js +1 -1
  22. package/dist/packages/errors/package.json.cjs.js +6 -0
  23. package/dist/packages/test-utils/package.json.cjs.js +1 -1
  24. package/dist/packages/theme/package.json.cjs.js +1 -1
  25. package/dist/plugins/auth-backend/package.json.cjs.js +1 -1
  26. package/dist/plugins/auth-backend-module-guest-provider/package.json.cjs.js +1 -1
  27. package/dist/plugins/catalog-node/package.json.cjs.js +6 -0
  28. package/dist/plugins/scaffolder-node/package.json.cjs.js +1 -1
  29. package/dist/plugins/scaffolder-node-test-utils/package.json.cjs.js +6 -0
  30. package/package.json +52 -24
  31. package/templates/default-backend-plugin/README.md.hbs +22 -8
  32. package/templates/default-backend-plugin/dev/index.ts.hbs +60 -0
  33. package/templates/default-backend-plugin/package.json.hbs +5 -5
  34. package/templates/default-backend-plugin/src/index.ts.hbs +0 -1
  35. package/templates/default-backend-plugin/src/plugin.test.ts.hbs +85 -0
  36. package/templates/default-backend-plugin/src/plugin.ts.hbs +16 -14
  37. package/templates/default-backend-plugin/src/router.test.ts +67 -0
  38. package/templates/default-backend-plugin/src/router.ts +51 -0
  39. package/templates/default-backend-plugin/src/services/TodoListService/createTodoListService.ts +100 -0
  40. package/templates/default-backend-plugin/src/services/TodoListService/index.ts +1 -0
  41. package/templates/default-backend-plugin/src/services/TodoListService/types.ts +27 -0
  42. package/templates/scaffolder-module/package.json.hbs +3 -1
  43. package/templates/scaffolder-module/src/actions/example.test.ts +24 -0
  44. package/templates/scaffolder-module/src/actions/{example/example.ts → example.ts} +7 -3
  45. package/templates/scaffolder-module/src/index.ts.hbs +1 -1
  46. package/templates/scaffolder-module/src/{actions/example/module.ts → module.ts} +3 -3
  47. package/templates/default-backend-plugin/dev/index.ts +0 -9
  48. package/templates/default-backend-plugin/src/service/router.test.ts +0 -30
  49. package/templates/default-backend-plugin/src/service/router.ts +0 -28
  50. package/templates/scaffolder-module/src/actions/example/example.test.ts +0 -32
  51. package/templates/scaffolder-module/src/actions/example/index.ts +0 -7
  52. package/templates/scaffolder-module/src/actions/index.ts +0 -1
@@ -8,7 +8,8 @@ function _interopDefaultCompat (e) { return e && typeof e === 'object' && 'defau
8
8
  var MiniCssExtractPlugin__default = /*#__PURE__*/_interopDefaultCompat(MiniCssExtractPlugin);
9
9
 
10
10
  const transforms = (options) => {
11
- const { isDev, isBackend } = options;
11
+ const { isDev, isBackend, rspack } = options;
12
+ const CssExtractRspackPlugin = rspack ? rspack.CssExtractRspackPlugin : MiniCssExtractPlugin__default.default;
12
13
  function insertBeforeJssStyles(element) {
13
14
  const head = document.head;
14
15
  const firstJssNode = head.querySelector("style[data-jss]");
@@ -24,7 +25,7 @@ const transforms = (options) => {
24
25
  exclude: /node_modules/,
25
26
  use: [
26
27
  {
27
- loader: require.resolve("swc-loader"),
28
+ loader: rspack ? "builtin:swc-loader" : require.resolve("swc-loader"),
28
29
  options: {
29
30
  jsc: {
30
31
  target: "es2022",
@@ -50,7 +51,7 @@ const transforms = (options) => {
50
51
  exclude: /node_modules/,
51
52
  use: [
52
53
  {
53
- loader: require.resolve("swc-loader"),
54
+ loader: rspack ? "builtin:swc-loader" : require.resolve("swc-loader"),
54
55
  options: {
55
56
  jsc: {
56
57
  target: "es2022",
@@ -81,7 +82,7 @@ const transforms = (options) => {
81
82
  test: [/\.icon\.svg$/],
82
83
  use: [
83
84
  {
84
- loader: require.resolve("swc-loader"),
85
+ loader: rspack ? "builtin:swc-loader" : require.resolve("swc-loader"),
85
86
  options: {
86
87
  jsc: {
87
88
  target: "es2022",
@@ -143,7 +144,7 @@ const transforms = (options) => {
143
144
  options: {
144
145
  insert: insertBeforeJssStyles
145
146
  }
146
- } : MiniCssExtractPlugin__default.default.loader,
147
+ } : CssExtractRspackPlugin.loader,
147
148
  {
148
149
  loader: require.resolve("css-loader"),
149
150
  options: {
@@ -156,7 +157,7 @@ const transforms = (options) => {
156
157
  const plugins = new Array();
157
158
  if (!isDev) {
158
159
  plugins.push(
159
- new MiniCssExtractPlugin__default.default({
160
+ new CssExtractRspackPlugin({
160
161
  filename: "static/[name].[contenthash:8].css",
161
162
  chunkFilename: "static/[name].[id].[contenthash:8].css",
162
163
  insert: insertBeforeJssStyles
@@ -5,17 +5,21 @@ var semver = require('semver');
5
5
  var paths = require('./paths.cjs.js');
6
6
  var _package$1 = require('../packages/backend-plugin-api/package.json.cjs.js');
7
7
  var _package$2 = require('../packages/backend-test-utils/package.json.cjs.js');
8
- var _package$3 = require('../packages/cli/package.json.cjs.js');
9
- var _package$4 = require('../packages/config/package.json.cjs.js');
10
- var _package$5 = require('../packages/core-app-api/package.json.cjs.js');
11
- var _package$6 = require('../packages/core-components/package.json.cjs.js');
12
- var _package$7 = require('../packages/core-plugin-api/package.json.cjs.js');
13
- var _package$8 = require('../packages/dev-utils/package.json.cjs.js');
14
- var _package$9 = require('../packages/test-utils/package.json.cjs.js');
15
- var _package$b = require('../plugins/scaffolder-node/package.json.cjs.js');
16
- var _package$c = require('../plugins/auth-backend/package.json.cjs.js');
17
- var _package$d = require('../plugins/auth-backend-module-guest-provider/package.json.cjs.js');
18
- var _package$a = require('../packages/theme/package.json.cjs.js');
8
+ var _package$3 = require('../packages/catalog-client/package.json.cjs.js');
9
+ var _package$4 = require('../packages/cli/package.json.cjs.js');
10
+ var _package$5 = require('../packages/config/package.json.cjs.js');
11
+ var _package$6 = require('../packages/core-app-api/package.json.cjs.js');
12
+ var _package$7 = require('../packages/core-components/package.json.cjs.js');
13
+ var _package$8 = require('../packages/core-plugin-api/package.json.cjs.js');
14
+ var _package$9 = require('../packages/dev-utils/package.json.cjs.js');
15
+ var _package$a = require('../packages/errors/package.json.cjs.js');
16
+ var _package$b = require('../packages/test-utils/package.json.cjs.js');
17
+ var _package$d = require('../plugins/scaffolder-node/package.json.cjs.js');
18
+ var _package$e = require('../plugins/scaffolder-node-test-utils/package.json.cjs.js');
19
+ var _package$f = require('../plugins/auth-backend/package.json.cjs.js');
20
+ var _package$g = require('../plugins/auth-backend-module-guest-provider/package.json.cjs.js');
21
+ var _package$h = require('../plugins/catalog-node/package.json.cjs.js');
22
+ var _package$c = require('../packages/theme/package.json.cjs.js');
19
23
  var _package = require('../packages/backend-defaults/package.json.cjs.js');
20
24
 
21
25
  function _interopDefaultCompat (e) { return e && typeof e === 'object' && 'default' in e ? e : { default: e }; }
@@ -27,17 +31,21 @@ const packageVersions = {
27
31
  "@backstage/backend-defaults": _package.version,
28
32
  "@backstage/backend-plugin-api": _package$1.version,
29
33
  "@backstage/backend-test-utils": _package$2.version,
30
- "@backstage/cli": _package$3.version,
31
- "@backstage/config": _package$4.version,
32
- "@backstage/core-app-api": _package$5.version,
33
- "@backstage/core-components": _package$6.version,
34
- "@backstage/core-plugin-api": _package$7.version,
35
- "@backstage/dev-utils": _package$8.version,
36
- "@backstage/test-utils": _package$9.version,
37
- "@backstage/theme": _package$a.version,
38
- "@backstage/plugin-scaffolder-node": _package$b.version,
39
- "@backstage/plugin-auth-backend": _package$c.version,
40
- "@backstage/plugin-auth-backend-module-guest-provider": _package$d.version
34
+ "@backstage/catalog-client": _package$3.version,
35
+ "@backstage/cli": _package$4.version,
36
+ "@backstage/config": _package$5.version,
37
+ "@backstage/core-app-api": _package$6.version,
38
+ "@backstage/core-components": _package$7.version,
39
+ "@backstage/core-plugin-api": _package$8.version,
40
+ "@backstage/dev-utils": _package$9.version,
41
+ "@backstage/errors": _package$a.version,
42
+ "@backstage/test-utils": _package$b.version,
43
+ "@backstage/theme": _package$c.version,
44
+ "@backstage/plugin-scaffolder-node": _package$d.version,
45
+ "@backstage/plugin-scaffolder-node-test-utils": _package$e.version,
46
+ "@backstage/plugin-auth-backend": _package$f.version,
47
+ "@backstage/plugin-auth-backend-module-guest-provider": _package$g.version,
48
+ "@backstage/plugin-catalog-node": _package$h.version
41
49
  };
42
50
  function findVersion() {
43
51
  const pkgContent = fs__default.default.readFileSync(paths.paths.resolveOwn("package.json"), "utf8");
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- var version = "0.5.1-next.2";
3
+ var version = "0.5.2";
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-next.1";
3
+ var version = "1.0.1";
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-next.2";
3
+ var version = "1.0.2";
4
4
 
5
5
  exports.version = version;
6
6
  //# sourceMappingURL=package.json.cjs.js.map
@@ -0,0 +1,6 @@
1
+ 'use strict';
2
+
3
+ var version = "1.7.1";
4
+
5
+ exports.version = version;
6
+ //# sourceMappingURL=package.json.cjs.js.map
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- var version = "0.28.0-next.2";
3
+ var version = "0.28.1";
4
4
  var dependencies = {
5
5
  "@backstage/catalog-model": "workspace:^",
6
6
  "@backstage/cli-common": "workspace:^",
@@ -50,7 +50,7 @@ var dependencies = {
50
50
  "cross-spawn": "^7.0.3",
51
51
  "css-loader": "^6.5.1",
52
52
  "ctrlc-windows": "^2.1.0",
53
- esbuild: "^0.23.0",
53
+ esbuild: "^0.24.0",
54
54
  "esbuild-loader": "^4.0.0",
55
55
  eslint: "^8.6.0",
56
56
  "eslint-config-prettier": "^9.0.0",
@@ -69,6 +69,7 @@ var dependencies = {
69
69
  "git-url-parse": "^15.0.0",
70
70
  glob: "^7.1.7",
71
71
  "global-agent": "^3.0.0",
72
+ globby: "^11.1.0",
72
73
  handlebars: "^4.7.3",
73
74
  "html-webpack-plugin": "^5.3.1",
74
75
  inquirer: "^8.2.0",
@@ -122,13 +123,23 @@ var devDependencies = {
122
123
  "@backstage/backend-common": "^0.25.0",
123
124
  "@backstage/backend-plugin-api": "workspace:^",
124
125
  "@backstage/backend-test-utils": "workspace:^",
126
+ "@backstage/catalog-client": "workspace:^",
125
127
  "@backstage/config": "workspace:^",
126
128
  "@backstage/core-app-api": "workspace:^",
127
129
  "@backstage/core-components": "workspace:^",
128
130
  "@backstage/core-plugin-api": "workspace:^",
129
131
  "@backstage/dev-utils": "workspace:^",
132
+ "@backstage/errors": "workspace:^",
133
+ "@backstage/plugin-auth-backend": "workspace:^",
134
+ "@backstage/plugin-auth-backend-module-guest-provider": "workspace:^",
135
+ "@backstage/plugin-catalog-node": "workspace:^",
136
+ "@backstage/plugin-scaffolder-node": "workspace:^",
137
+ "@backstage/plugin-scaffolder-node-test-utils": "workspace:^",
130
138
  "@backstage/test-utils": "workspace:^",
131
139
  "@backstage/theme": "workspace:^",
140
+ "@rspack/core": "^1.0.10",
141
+ "@rspack/dev-server": "^1.0.9",
142
+ "@rspack/plugin-react-refresh": "^1.0.0",
132
143
  "@types/cross-spawn": "^6.0.2",
133
144
  "@types/ejs": "^3.1.3",
134
145
  "@types/express": "^4.17.6",
@@ -143,6 +154,7 @@ var devDependencies = {
143
154
  "@types/svgo": "^2.6.2",
144
155
  "@types/tar": "^6.1.1",
145
156
  "@types/terser-webpack-plugin": "^5.0.4",
157
+ "@types/webpack-sources": "^3.2.3",
146
158
  "@types/yarnpkg__lockfile": "^1.1.4",
147
159
  "@vitejs/plugin-react": "^4.3.1",
148
160
  del: "^7.0.0",
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- var version = "1.15.1-next.1";
3
+ var version = "1.15.1";
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.15.1-next.2";
3
+ var version = "0.15.1";
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.10.0-next.1";
3
+ var version = "1.10.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-next.2";
3
+ var version = "1.1.2";
4
4
 
5
5
  exports.version = version;
6
6
  //# sourceMappingURL=package.json.cjs.js.map
@@ -0,0 +1,6 @@
1
+ 'use strict';
2
+
3
+ var version = "1.2.4";
4
+
5
+ exports.version = version;
6
+ //# sourceMappingURL=package.json.cjs.js.map
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- var version = "1.6.1-next.2";
3
+ var version = "1.7.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.6.0-next.1";
3
+ var version = "0.6.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-next.1";
3
+ var version = "0.23.1";
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-next.1";
3
+ var version = "0.2.1";
4
4
 
5
5
  exports.version = version;
6
6
  //# sourceMappingURL=package.json.cjs.js.map
@@ -0,0 +1,6 @@
1
+ 'use strict';
2
+
3
+ var version = "1.13.1";
4
+
5
+ exports.version = version;
6
+ //# sourceMappingURL=package.json.cjs.js.map
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- var version = "0.5.0-next.2";
3
+ var version = "0.5.0";
4
4
 
5
5
  exports.version = version;
6
6
  //# sourceMappingURL=package.json.cjs.js.map
@@ -0,0 +1,6 @@
1
+ 'use strict';
2
+
3
+ var version = "0.1.14";
4
+
5
+ exports.version = version;
6
+ //# sourceMappingURL=package.json.cjs.js.map
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@backstage/cli",
3
- "version": "0.28.0-next.2",
3
+ "version": "0.28.1",
4
4
  "description": "CLI for developing Backstage plugins and apps",
5
5
  "backstage": {
6
6
  "role": "cli"
@@ -42,16 +42,16 @@
42
42
  "watch": "./src"
43
43
  },
44
44
  "dependencies": {
45
- "@backstage/catalog-model": "1.7.0",
46
- "@backstage/cli-common": "0.1.14",
47
- "@backstage/cli-node": "0.2.9-next.0",
48
- "@backstage/config": "1.2.0",
49
- "@backstage/config-loader": "1.9.1",
50
- "@backstage/errors": "1.2.4",
51
- "@backstage/eslint-plugin": "0.1.10-next.1",
52
- "@backstage/integration": "1.15.1-next.1",
53
- "@backstage/release-manifests": "0.0.11",
54
- "@backstage/types": "1.1.1",
45
+ "@backstage/catalog-model": "^1.7.0",
46
+ "@backstage/cli-common": "^0.1.14",
47
+ "@backstage/cli-node": "^0.2.9",
48
+ "@backstage/config": "^1.2.0",
49
+ "@backstage/config-loader": "^1.9.1",
50
+ "@backstage/errors": "^1.2.4",
51
+ "@backstage/eslint-plugin": "^0.1.10",
52
+ "@backstage/integration": "^1.15.1",
53
+ "@backstage/release-manifests": "^0.0.11",
54
+ "@backstage/types": "^1.1.1",
55
55
  "@manypkg/get-packages": "^1.1.3",
56
56
  "@module-federation/enhanced": "^0.6.0",
57
57
  "@octokit/graphql": "^5.0.0",
@@ -90,7 +90,7 @@
90
90
  "cross-spawn": "^7.0.3",
91
91
  "css-loader": "^6.5.1",
92
92
  "ctrlc-windows": "^2.1.0",
93
- "esbuild": "^0.23.0",
93
+ "esbuild": "^0.24.0",
94
94
  "esbuild-loader": "^4.0.0",
95
95
  "eslint": "^8.6.0",
96
96
  "eslint-config-prettier": "^9.0.0",
@@ -109,6 +109,7 @@
109
109
  "git-url-parse": "^15.0.0",
110
110
  "glob": "^7.1.7",
111
111
  "global-agent": "^3.0.0",
112
+ "globby": "^11.1.0",
112
113
  "handlebars": "^4.7.3",
113
114
  "html-webpack-plugin": "^5.3.1",
114
115
  "inquirer": "^8.2.0",
@@ -160,15 +161,25 @@
160
161
  },
161
162
  "devDependencies": {
162
163
  "@backstage/backend-common": "^0.25.0",
163
- "@backstage/backend-plugin-api": "1.0.1-next.1",
164
- "@backstage/backend-test-utils": "1.0.1-next.2",
165
- "@backstage/config": "1.2.0",
166
- "@backstage/core-app-api": "1.15.1-next.1",
167
- "@backstage/core-components": "0.15.1-next.2",
168
- "@backstage/core-plugin-api": "1.10.0-next.1",
169
- "@backstage/dev-utils": "1.1.2-next.2",
170
- "@backstage/test-utils": "1.6.1-next.2",
171
- "@backstage/theme": "0.6.0-next.1",
164
+ "@backstage/backend-plugin-api": "^1.0.1",
165
+ "@backstage/backend-test-utils": "^1.0.2",
166
+ "@backstage/catalog-client": "^1.7.1",
167
+ "@backstage/config": "^1.2.0",
168
+ "@backstage/core-app-api": "^1.15.1",
169
+ "@backstage/core-components": "^0.15.1",
170
+ "@backstage/core-plugin-api": "^1.10.0",
171
+ "@backstage/dev-utils": "^1.1.2",
172
+ "@backstage/errors": "^1.2.4",
173
+ "@backstage/plugin-auth-backend": "^0.23.1",
174
+ "@backstage/plugin-auth-backend-module-guest-provider": "^0.2.1",
175
+ "@backstage/plugin-catalog-node": "^1.13.1",
176
+ "@backstage/plugin-scaffolder-node": "^0.5.0",
177
+ "@backstage/plugin-scaffolder-node-test-utils": "^0.1.14",
178
+ "@backstage/test-utils": "^1.7.0",
179
+ "@backstage/theme": "^0.6.0",
180
+ "@rspack/core": "^1.0.10",
181
+ "@rspack/dev-server": "^1.0.9",
182
+ "@rspack/plugin-react-refresh": "^1.0.0",
172
183
  "@types/cross-spawn": "^6.0.2",
173
184
  "@types/ejs": "^3.1.3",
174
185
  "@types/express": "^4.17.6",
@@ -183,6 +194,7 @@
183
194
  "@types/svgo": "^2.6.2",
184
195
  "@types/tar": "^6.1.1",
185
196
  "@types/terser-webpack-plugin": "^5.0.4",
197
+ "@types/webpack-sources": "^3.2.3",
186
198
  "@types/yarnpkg__lockfile": "^1.1.4",
187
199
  "@vitejs/plugin-react": "^4.3.1",
188
200
  "del": "^7.0.0",
@@ -193,12 +205,28 @@
193
205
  "vite-plugin-node-polyfills": "^0.22.0"
194
206
  },
195
207
  "peerDependencies": {
196
- "@vitejs/plugin-react": "^4.3.1",
197
- "vite": "^5.0.0",
198
- "vite-plugin-html": "^3.2.2",
208
+ "@modyfi/vite-plugin-yaml": "^1.1.0",
209
+ "@rspack/core": "^1.0.10",
210
+ "@rspack/dev-server": "^1.0.9",
211
+ "@rspack/plugin-react-refresh": "^1.0.0",
212
+ "@vitejs/plugin-react": "^4.0.4",
213
+ "vite": "^4.4.9",
214
+ "vite-plugin-html": "^3.2.0",
199
215
  "vite-plugin-node-polyfills": "^0.22.0"
200
216
  },
201
217
  "peerDependenciesMeta": {
218
+ "@modyfi/vite-plugin-yaml": {
219
+ "optional": true
220
+ },
221
+ "@rspack/core": {
222
+ "optional": true
223
+ },
224
+ "@rspack/dev-server": {
225
+ "optional": true
226
+ },
227
+ "@rspack/plugin-react-refresh": {
228
+ "optional": true
229
+ },
202
230
  "@vitejs/plugin-react": {
203
231
  "optional": true
204
232
  },
@@ -1,14 +1,28 @@
1
1
  # {{id}}
2
2
 
3
- Welcome to the {{id}} backend plugin!
3
+ This plugin backend was templated using the Backstage CLI. You should replace this text with a description of your plugin backend.
4
4
 
5
- _This plugin was created through the Backstage CLI_
5
+ ## Installation
6
6
 
7
- ## Getting started
7
+ This plugin is installed via the `{{name}}` package. To install it to your backend package, run the following command:
8
8
 
9
- Your plugin has been added to the example app in this repository, meaning you'll be able to access it by running `yarn
10
- start` in the root directory, and then navigating to [/{{id}}/health](http://localhost:7007/api/{{id}}/health).
9
+ ```bash
10
+ # From your root directory
11
+ yarn --cwd packages/backend add {{name}}
12
+ ```
11
13
 
12
- You can also serve the plugin in isolation by running `yarn start` in the plugin directory.
13
- This method of serving the plugin provides quicker iteration speed and a faster startup and hot reloads.
14
- It is only meant for local development, and the setup for it can be found inside the [/dev](./dev) directory.
14
+ Then add the plugin to your backend in `packages/backend/src/index.ts`:
15
+
16
+ ```ts
17
+ const backend = createBackend();
18
+ // ...
19
+ backend.add(import('{{name}}'));
20
+ ```
21
+
22
+ ## Development
23
+
24
+ This plugin backend can be started in a standalone mode from directly in this
25
+ package with `yarn start`. It is a limited setup that is most convenient when
26
+ developing the plugin backend itself.
27
+
28
+ If you want to run the entire project, including the frontend, run `yarn dev` from the root directory.
@@ -0,0 +1,60 @@
1
+ import { createBackend } from '@backstage/backend-defaults';
2
+ import { mockServices } from '@backstage/backend-test-utils';
3
+ import { catalogServiceMock } from '@backstage/plugin-catalog-node/testUtils';
4
+
5
+ // TEMPLATE NOTE:
6
+ // This is the development setup for your plugin that wires up a
7
+ // minimal backend that can use both real and mocked plugins and services.
8
+ //
9
+ // Start up the backend by running `yarn start` in the package directory.
10
+ // Once it's up and running, try out the following requests:
11
+ //
12
+ // Create a new todo item, standalone or for the sample component:
13
+ //
14
+ // curl http://localhost:7007/api/{{id}}/todos -H 'Content-Type: application/json' -d '{"title": "My Todo"}'
15
+ // curl http://localhost:7007/api/{{id}}/todos -H 'Content-Type: application/json' -d '{"title": "My Todo", "entityRef": "component:default/sample"}'
16
+ //
17
+ // List TODOs:
18
+ //
19
+ // curl http://localhost:7007/api/{{id}}/todos
20
+ //
21
+ // Explicitly make an unauthenticated request, or with service auth:
22
+ //
23
+ // curl http://localhost:7007/api/{{id}}/todos -H 'Authorization: Bearer mock-none-token'
24
+ // curl http://localhost:7007/api/{{id}}/todos -H 'Authorization: Bearer mock-service-token'
25
+
26
+ const backend = createBackend();
27
+
28
+ // TEMPLATE NOTE:
29
+ // Mocking the auth and httpAuth service allows you to call your plugin API without
30
+ // having to authenticate.
31
+ //
32
+ // If you want to use real auth, you can install the following instead:
33
+ // backend.add(import('@backstage/plugin-auth-backend'));
34
+ // backend.add(import('@backstage/plugin-auth-backend-module-guest-provider'));
35
+ backend.add(mockServices.auth.factory());
36
+ backend.add(mockServices.httpAuth.factory());
37
+
38
+ // TEMPLATE NOTE:
39
+ // Rather than using a real catalog you can use a mock with a fixed set of entities.
40
+ backend.add(
41
+ catalogServiceMock.factory({
42
+ entities: [
43
+ {
44
+ apiVersion: 'backstage.io/v1alpha1',
45
+ kind: 'Component',
46
+ metadata: {
47
+ name: 'sample',
48
+ title: 'Sample Component',
49
+ },
50
+ spec: {
51
+ type: 'service',
52
+ },
53
+ },
54
+ ],
55
+ }),
56
+ );
57
+
58
+ backend.add(import('../src'));
59
+
60
+ backend.start();
@@ -30,19 +30,19 @@
30
30
  "dependencies": {
31
31
  "@backstage/backend-defaults": "{{versionQuery '@backstage/backend-defaults'}}",
32
32
  "@backstage/backend-plugin-api": "{{versionQuery '@backstage/backend-plugin-api'}}",
33
+ "@backstage/catalog-client": "{{versionQuery '@backstage/catalog-client'}}",
34
+ "@backstage/errors": "{{versionQuery '@backstage/errors'}}",
35
+ "@backstage/plugin-catalog-node": "{{versionQuery '@backstage/plugin-catalog-node'}}",
33
36
  "express": "{{versionQuery 'express' '4.17.1'}}",
34
37
  "express-promise-router": "{{versionQuery 'express-promise-router' '4.1.0'}}",
35
- "node-fetch": "{{versionQuery 'node-fetch' '2.6.7'}}"
38
+ "zod": "{{versionQuery 'zod' '3.22.4'}}"
36
39
  },
37
40
  "devDependencies": {
38
41
  "@backstage/backend-test-utils": "{{versionQuery '@backstage/backend-test-utils'}}",
39
42
  "@backstage/cli": "{{versionQuery '@backstage/cli'}}",
40
- "@backstage/plugin-auth-backend": "{{versionQuery '@backstage/plugin-auth-backend'}}",
41
- "@backstage/plugin-auth-backend-module-guest-provider": "{{versionQuery '@backstage/plugin-auth-backend-module-guest-provider'}}",
42
43
  "@types/express": "{{versionQuery '@types/express' '4.17.6'}}",
43
44
  "@types/supertest": "{{versionQuery '@types/supertest' '2.0.12'}}",
44
- "supertest": "{{versionQuery 'supertest' '6.2.4'}}",
45
- "msw": "{{versionQuery 'msw' '2.3.1'}}"
45
+ "supertest": "{{versionQuery 'supertest' '6.2.4'}}"
46
46
  },
47
47
  "files": [
48
48
  "dist"
@@ -1,2 +1 @@
1
- export * from './service/router';
2
1
  export { {{pluginVar}} as default } from './plugin';