Add bin entry points for standalone CLI module execution

Each CLI module package now includes a bin script and cli.ts entry
point, allowing modules to be executed directly via npx without
being wired into the main @backstage/cli package.

Signed-off-by: Patrik Oldsberg <poldsberg@gmail.com>
Made-with: Cursor
This commit is contained in:
Patrik Oldsberg
2026-03-14 11:47:47 +01:00
parent 401c1f7e24
commit 64a96d9d9f
34 changed files with 715 additions and 22 deletions
+33
View File
@@ -0,0 +1,33 @@
#!/usr/bin/env node
/*
* Copyright 2024 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
const path = require('node:path');
/* eslint-disable-next-line no-restricted-syntax */
const isLocal = require('node:fs').existsSync(
path.resolve(__dirname, '../src'),
);
if (!isLocal) {
const { runCliModule } = require('@backstage/cli-node');
const cliModule = require('..').default;
const pkg = require('../package.json');
runCliModule({ module: cliModule, name: pkg.name, version: pkg.version });
} else {
require('@backstage/cli/config/nodeTransform.cjs');
require('../src/cli');
}
+4 -2
View File
@@ -20,7 +20,8 @@
"main": "src/index.ts",
"types": "src/index.ts",
"files": [
"dist"
"dist",
"bin"
],
"scripts": {
"build": "backstage-cli package build",
@@ -40,5 +41,6 @@
"devDependencies": {
"@backstage/cli": "workspace:^",
"@types/fs-extra": "^11.0.0"
}
},
"bin": "bin/cli-module-info"
}
+26
View File
@@ -0,0 +1,26 @@
/*
* Copyright 2024 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
import { runCliModule } from '@backstage/cli-node';
import cliModule from './index';
const pkg = require('../package.json') as { name: string; version: string };
runCliModule({
module: cliModule,
name: pkg.name,
version: pkg.version,
});