@grafana/plugin-meta-extractor
TypeScript icon, indicating that this package has built-in type declarations

0.0.2 • Public • Published

Grafana / Plugin Meta Extractor

@grafana/plugin-meta-extractor is a cli tool that can be used to extract meta-information from the source code of a Grafana plugin. It is used to generate plugin metadata without the need for manual intervention, which is then used by the Grafana application to understand features or functionalities a plugin supports or uses.

Install

npm install @grafana/plugin-meta-extractor --save-dev

Usage

With Webpack

The package exposes a webpack plugin that can be used to generate plugin meta-information on every build based on the source code. The plugin adds additional information to the plugin.json file by overriding the generated property in the JSON.

// webpack.config.ts
// -----------------

import { GrafanaPluginMetaExtractor } from '@grafana/plugin-meta-extractor';

export default {
  // ...
  plugins: [
    new GrafanaPluginMetaExtractor(),
    // ...
  ],
};

In code

The package exposes the methods for extracting the meta-data so they can be used manually:

import { extractPluginMeta } from '@grafana/plugin-meta-extractor';

const entryPoint = `${PLUGIN_ROOT}/src/module.ts`;
const pluginMeta = extractPluginMeta(entryPoint);

CLI

By calling the binary against a (module.ts|tsx) file, the package will print out the extracted meta-data to the console.

# Run local build
./dist/bin/run.js ~/my-grafana-plugin/src/module.ts

# Run latest remote version
npx @grafana/plugin-meta-extractor ~/my-grafana-plugin/src/module.ts

Returned data format

The returned meta-data is in the following format:

{
  extensions: Array<{
    type: "link" | "component",
    extensionPointId: string,
    title: string,
    description: string
  }>
}

Plugin support

This package requires the module.(ts|tsx) to be in a certain format to be able to parse it (we are planning to improve on this in the future). The method calls for registering extensions have to be in the module.(ts|tsx), and they need to be called on the AppPlugin instance in a "chained" manner:

// src/module.ts
export const plugin = new AppPlugin<{}>()
  .setRootPage(App)
  .configureExtensionLink<PluginExtensionPanelContext>({
    // ...
  })
  .configureExtensionLink<PluginExtensionPanelContext>({
    // ...
  });

Contributing

We are always grateful for contributions! See CONTRIBUTING.md for more information.

Package Sidebar

Install

npm i @grafana/plugin-meta-extractor

Weekly Downloads

970

Version

0.0.2

License

Apache-2.0

Unpacked Size

57.5 kB

Total Files

34

Last publish

Collaborators

  • teodosii
  • yulia.shanyrova
  • clord
  • reemtariqq
  • grafanabot
  • scottleppgrafana
  • academo_grafana
  • jwestbrook
  • ivanahuckova
  • domasx2
  • bmatei
  • dsotirakis
  • tolzhabayev
  • iwysiu
  • andresmgotor
  • leventebalogh
  • torkelo
  • dprokop
  • peteholmberg
  • ryantxu
  • mckn
  • sunker