Salta al contenuto principale

Plugin del Middleware

Cos'è un Plugin del Middleware?

I plugin del middleware hanno la capacità di modificare il livello dell'API (web e cli), aggiungendo nuovi endpoint o intercettando le richieste.

API

interface IPluginMiddleware<T> extends IPlugin<T> {
register_middlewares(app: any, auth: IBasicAuth<T>, storage: IStorageManager<T>): void;
}

register_middlewares

Il metodo fornisce accesso completo all'autenticazione e archiviazione tramite auth e storage. app è l'applicazione espressa che ti consente di aggiungere nuovi endpoint.

public register_middlewares(
app: Application,
auth: IBasicAuth<CustomConfig>,
storage: IStorageManager<CustomConfig>
): void {
const router = Router();
router.post(
'/custom-endpoint',
(req: Request, res: Response & { report_error?: Function }, next: NextFunction): void => {
const encryptedString = auth.aesEncrypt(Buffer.from(this.foo, 'utf8'));
res.setHeader('X-Verdaccio-Token-Plugin', encryptedString.toString());
next();
}
);
app.use('/-/npm/something-new', router);
}

auth e storage sono istanze estendibili, ma non consigliamo questo approccio a meno che non sia ben motivato.

Un buon esempio di un plugin middleware è verdaccio-audit.

Generare un plugin del middleware

Per le informazioni dettagliate, controlla la pagina del nostro generatore di plugin. Esegui il comando yo nel tuo terminale e segui i passaggi.

➜ yo verdaccio-plugin

Appena trovato un `.yo-rc.json` in una cartella madre.
Impostando il root del progetto a: /Users/user/verdaccio_yo_generator

_-----_ ╭──────────────────────────╮
| | │ Benvenuto al generatore│
|--(o)--| │ generator-verdaccio-plug │
`---------´ │ di plugin! │
( _´U`_ ) ╰──────────────────────────╯
/___A___\ /
| ~ |
__'.___.'__
´ ` |° ´ Y `

? Qual è il nome del tuo plugin? custom-endpoint
? Seleziona la Lingua
typescript
? Che tipo di plugin vuoi creare? middleware
? Sei pregato di descrivere il fantastico plugin del middleware del tuo plugin
? Nome utente o dell'organizzazione di GitHub myusername
? Nome dell'Autore Mario Rossi
? Email dell'Autore mariorossi@gmail.com
? Definisci le tue parole chiave (virgola per dividere) verdaccio,plugin,middleware,awesome,verdaccio-plugin
create verdaccio-plugin-custom-endpoint/package.json
create verdaccio-plugin-custom-endpoint/.gitignore
create verdaccio-plugin-custom-endpoint/.npmignore
create verdaccio-plugin-custom-endpoint/jest.config.js
create verdaccio-plugin-custom-endpoint/.babelrc
create verdaccio-plugin-custom-endpoint/.travis.yml
create verdaccio-plugin-custom-endpoint/README.md
create verdaccio-plugin-custom-endpoint/.eslintrc
create verdaccio-plugin-custom-endpoint/.eslintignore
create verdaccio-plugin-custom-endpoint/src/index.ts
create verdaccio-plugin-custom-endpoint/index.ts
create verdaccio-plugin-custom-endpoint/tsconfig.json
create verdaccio-plugin-custom-endpoint/types/index.ts
create verdaccio-plugin-custom-endpoint/.editorconfig

Ho fatto tutto. Eseguendo l'installazione di npm per farti installare le dipendenze necessarie. Se questo fallisce, prova a eseguire tu stesso il comando.


⸨ ░░░░░░░░░░░░░░░░░⸩ ⠋ fetchMetadata: sill pacote range manifest for @babel/plugin-syntax-jsx@^7.7.4 fetc

Dopo il termine dell'installazione, accedi all'impalcatura del tuo progetto.

➜ cd verdaccio-plugin-auth-service-name
➜ cat package.json

{
"nome": "verdaccio-plugin-custom-endpoint",
"versione": "0.0.1",
"descrizione": "awesome middleware plugin",
...

I middleware sono registrati dopo gli endpoint integrati, dunque, non è possibile sovrascrivere quelli implementati.

Elenco di Plugin del Middleware della Community

  • verdaccio-audit: Plugin di Verdaccio per il supporto cli di npm audit (integrato) (compatibile dalla 3.x)

  • verdaccio-profile-api: Plugin di Verdaccio per supporto alla cli di npm profile e npm profile set password per l'autenticazione basata su verdaccio-htpasswd

  • verdaccio-https Plugin del Middleware di Verdaccio per reindirizzare a https se l'intestazione x-forwarded-proto è impostata

  • verdaccio-badges Un plugin di Verdaccio per fornire un endpoint del generatore di distintivi della versione

  • verdaccio-openmetrics Plugin di Verdaccio che espone un endpoint di OpenMetrics/Prometheus con metriche di salute e traffico

  • verdaccio-sentry errori di registro di sentry

  • verdaccio-pacman Plugin del Middleware di Verdaccio per gestire tag e versioni di pacchetti