Files
OmniRoute/docs/i18n/pl/docs/frameworks/PLUGINS.md

3.6 KiB

title, version, lastUpdated
title version lastUpdated
System wtyczek CLI OmniRoute 3.8.40 2026-06-28

System wtyczek CLI OmniRoute

Rozszerzaj CLI omniroute bez modyfikowania jego rdzenia. Wtyczki stosują konwencję nazewnictwa omniroute-cmd-*, podobnie jak gh extension lub kubectl plugin.

Szybki start

# Install a plugin from npm
omniroute plugin install stripe

# Install a local plugin in development
omniroute plugin install ./my-plugin

# List installed plugins
omniroute plugin list

# Scaffold a new plugin
omniroute plugin scaffold myplugin
cd omniroute-cmd-myplugin
omniroute plugin install .

Anatomia wtyczki

Wtyczka to pakiet npm o nazwie omniroute-cmd-<name> (lub @scope/omniroute-cmd-<name>).

omniroute-cmd-myplugin/
├── package.json     # must have "type": "module" and "main": "index.mjs"
├── index.mjs        # exports register(program, ctx) + optional meta
└── README.md

package.json

{
  "name": "omniroute-cmd-myplugin",
  "version": "0.1.0",
  "type": "module",
  "main": "index.mjs",
  "engines": { "omniroute": ">=4.0.0" },
  "keywords": ["omniroute-plugin", "omniroute-cmd"]
}

index.mjs

export const meta = {
  name: "myplugin",
  version: "0.1.0",
  description: "My plugin for OmniRoute",
  omnirouteApi: ">=4.0.0",
};

export function register(program, ctx) {
  program
    .command("myplugin")
    .description(meta.description)
    .option("-n, --name <name>")
    .action(async (opts, cmd) => {
      const gOpts = cmd.optsWithGlobals();
      const res = await ctx.apiFetch("/api/combos", {
        baseUrl: gOpts.baseUrl,
        apiKey: gOpts.apiKey,
      });
      const data = await res.json();
      ctx.emit(data, gOpts);
    });
}

API kontekstu wtyczki

Obiekt ctx przekazywany do register(program, ctx):

Property Type Description
ctx.apiFetch(path, opts) async function Uwierzytelniony fetch do serwera OmniRoute
ctx.emit(data, opts) function Wyjście w formacie table/json/jsonl/csv wg flagi --output
ctx.t(key) async function Wyszukiwanie tłumaczenia i18n
ctx.withSpinner(label, fn) async function Opakowuje async fn w spinner ora
ctx.baseUrl string Rozwiązany base URL
ctx.apiKey string | null Klucz API, jeśli podany

Odkrywanie

Wtyczki są wykrywane z:

  1. ~/.omniroute/plugins/<name>/ — instalacje lokalne użytkownika
  2. OMNIROUTE_PLUGIN_PATH env var — niestandardowy katalog

Błędy ładowania są przechwytywane i wypisywane jako ostrzeżenia — uszkodzona wtyczka nigdy nie zawiesza CLI.

Bezpieczeństwo

Wtyczki działają z tymi samymi uprawnieniami procesu Node.js co omniroute. Instaluj wtyczki wyłącznie ze źródeł, którym ufasz. omniroute plugin install wyświetla wyraźne ostrzeżenie i wymaga --yes albo interaktywnego potwierdzenia.

Publikowanie

  1. Upewnij się, że package.json ma "keywords": ["omniroute-plugin"]
  2. npm publish jak zwykle
  3. Użytkownicy odkrywają wtyczki przez omniroute plugin search <query> (przeszukuje rejestr npm)

Przykładowa wtyczka

Zobacz examples/omniroute-cmd-hello/ — minimalny działający przykład z meta + register().