This plugin lists // TODO
comments in source code. It currently exports a single component extension for use on entity pages.
Setup
yarn --cwd packages/app add @backstage-community/plugin-todo
yarn --cwd packages/backend add @backstage-community/plugin-todo-backend
In a new file named todo.ts
under backend/src/plugins
:
import { Router } from 'express';
import { CatalogClient } from '@backstage/catalog-client';
import {
createRouter,
TodoReaderService,
TodoScmReader,
} from '@backstage-community/plugin-todo-backend';
import { PluginEnvironment } from '../types';
export default async function createPlugin(
env: PluginEnvironment,
): Promise<Router> {
const todoReader = TodoScmReader.fromConfig(env.config, {
logger: env.logger,
reader: env.reader,
});
const catalogClient = new CatalogClient({
discoveryApi: env.discovery,
});
const todoService = new TodoReaderService({
todoReader,
catalogClient,
});
return await createRouter({ todoService });
}
And then add to packages/backend/src/index.ts
:
import todo from './plugins/todo';
async function main() {
const todoEnv = useHotMemoize(module, () => createEnv('todo'));
apiRouter.use('/todo', await todo(todoEnv));
- Add the plugin as a tab to your service entities:
import { EntityTodoContent } from '@backstage-community/plugin-todo';
const serviceEntityPage = (
<EntityLayout>
{/* other tabs... */}
<EntityLayout.Route path="/todo" title="Todo">
<EntityTodoContent />
</EntityLayout.Route>
Format
The default parser uses Leasot, which supports a wide range of languages. By default it supports the TODO
and FIXME
tags, along with @
prefix and author reference through with either a (<name>)
suffix or trailing /<name>
. For more information on how to configure the parser, see @backstage-community/plugin-todo-backend
.
Below are some examples of formats that are supported by default:
Note that trailing comments are not supported, the following TODO would not be listed:
function reverse(str: string) {
return str.reverse();
}
The scanner also ignores all dot-files and directories, meaning TODOs inside of those will not be listed.
Extensions
EntityTodoContent | Content for an entity page, showing a table of TODO items for the given entity. |