@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.
- package/CHANGELOG.md +59 -0
- package/dist/commands/build/buildFrontend.cjs.js +3 -2
- package/dist/commands/build/command.cjs.js +5 -2
- package/dist/commands/repo/lint.cjs.js +18 -6
- package/dist/commands/repo/test.cjs.js +25 -15
- package/dist/lib/bundler/bundle.cjs.js +5 -4
- package/dist/lib/bundler/config.cjs.js +59 -37
- package/dist/lib/bundler/hasReactDomClient.cjs.js +5 -1
- package/dist/lib/bundler/optimization.cjs.js +10 -6
- package/dist/lib/bundler/server.cjs.js +47 -7
- package/dist/lib/bundler/transforms.cjs.js +7 -6
- package/dist/lib/version.cjs.js +30 -22
- package/dist/packages/backend-defaults/package.json.cjs.js +1 -1
- package/dist/packages/backend-plugin-api/package.json.cjs.js +1 -1
- package/dist/packages/backend-test-utils/package.json.cjs.js +1 -1
- package/dist/packages/catalog-client/package.json.cjs.js +6 -0
- package/dist/packages/cli/package.json.cjs.js +14 -2
- package/dist/packages/core-app-api/package.json.cjs.js +1 -1
- package/dist/packages/core-components/package.json.cjs.js +1 -1
- package/dist/packages/core-plugin-api/package.json.cjs.js +1 -1
- package/dist/packages/dev-utils/package.json.cjs.js +1 -1
- package/dist/packages/errors/package.json.cjs.js +6 -0
- package/dist/packages/test-utils/package.json.cjs.js +1 -1
- package/dist/packages/theme/package.json.cjs.js +1 -1
- package/dist/plugins/auth-backend/package.json.cjs.js +1 -1
- package/dist/plugins/auth-backend-module-guest-provider/package.json.cjs.js +1 -1
- package/dist/plugins/catalog-node/package.json.cjs.js +6 -0
- package/dist/plugins/scaffolder-node/package.json.cjs.js +1 -1
- package/dist/plugins/scaffolder-node-test-utils/package.json.cjs.js +6 -0
- package/package.json +52 -24
- package/templates/default-backend-plugin/README.md.hbs +22 -8
- package/templates/default-backend-plugin/dev/index.ts.hbs +60 -0
- package/templates/default-backend-plugin/package.json.hbs +5 -5
- package/templates/default-backend-plugin/src/index.ts.hbs +0 -1
- package/templates/default-backend-plugin/src/plugin.test.ts.hbs +85 -0
- package/templates/default-backend-plugin/src/plugin.ts.hbs +16 -14
- package/templates/default-backend-plugin/src/router.test.ts +67 -0
- package/templates/default-backend-plugin/src/router.ts +51 -0
- package/templates/default-backend-plugin/src/services/TodoListService/createTodoListService.ts +100 -0
- package/templates/default-backend-plugin/src/services/TodoListService/index.ts +1 -0
- package/templates/default-backend-plugin/src/services/TodoListService/types.ts +27 -0
- package/templates/scaffolder-module/package.json.hbs +3 -1
- package/templates/scaffolder-module/src/actions/example.test.ts +24 -0
- package/templates/scaffolder-module/src/actions/{example/example.ts → example.ts} +7 -3
- package/templates/scaffolder-module/src/index.ts.hbs +1 -1
- package/templates/scaffolder-module/src/{actions/example/module.ts → module.ts} +3 -3
- package/templates/default-backend-plugin/dev/index.ts +0 -9
- package/templates/default-backend-plugin/src/service/router.test.ts +0 -30
- package/templates/default-backend-plugin/src/service/router.ts +0 -28
- package/templates/scaffolder-module/src/actions/example/example.test.ts +0 -32
- package/templates/scaffolder-module/src/actions/example/index.ts +0 -7
- 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
|
-
} :
|
|
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
|
|
160
|
+
new CssExtractRspackPlugin({
|
|
160
161
|
filename: "static/[name].[contenthash:8].css",
|
|
161
162
|
chunkFilename: "static/[name].[id].[contenthash:8].css",
|
|
162
163
|
insert: insertBeforeJssStyles
|
package/dist/lib/version.cjs.js
CHANGED
|
@@ -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/
|
|
9
|
-
var _package$4 = require('../packages/
|
|
10
|
-
var _package$5 = require('../packages/
|
|
11
|
-
var _package$6 = require('../packages/core-
|
|
12
|
-
var _package$7 = require('../packages/core-
|
|
13
|
-
var _package$8 = require('../packages/
|
|
14
|
-
var _package$9 = require('../packages/
|
|
15
|
-
var _package$
|
|
16
|
-
var _package$
|
|
17
|
-
var _package$d = require('../plugins/
|
|
18
|
-
var _package$
|
|
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/
|
|
31
|
-
"@backstage/
|
|
32
|
-
"@backstage/
|
|
33
|
-
"@backstage/core-
|
|
34
|
-
"@backstage/core-
|
|
35
|
-
"@backstage/
|
|
36
|
-
"@backstage/
|
|
37
|
-
"@backstage/
|
|
38
|
-
"@backstage/
|
|
39
|
-
"@backstage/
|
|
40
|
-
"@backstage/plugin-
|
|
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.28.
|
|
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.
|
|
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",
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@backstage/cli",
|
|
3
|
-
"version": "0.28.
|
|
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
|
|
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",
|
|
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.
|
|
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
|
|
164
|
-
"@backstage/backend-test-utils": "1.0.
|
|
165
|
-
"@backstage/
|
|
166
|
-
"@backstage/
|
|
167
|
-
"@backstage/core-
|
|
168
|
-
"@backstage/core-
|
|
169
|
-
"@backstage/
|
|
170
|
-
"@backstage/
|
|
171
|
-
"@backstage/
|
|
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
|
-
"@
|
|
197
|
-
"
|
|
198
|
-
"
|
|
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
|
-
|
|
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
|
-
|
|
5
|
+
## Installation
|
|
6
6
|
|
|
7
|
-
|
|
7
|
+
This plugin is installed via the `{{name}}` package. To install it to your backend package, run the following command:
|
|
8
8
|
|
|
9
|
-
|
|
10
|
-
|
|
9
|
+
```bash
|
|
10
|
+
# From your root directory
|
|
11
|
+
yarn --cwd packages/backend add {{name}}
|
|
12
|
+
```
|
|
11
13
|
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
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
|
-
"
|
|
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"
|