Salta al contenuto principale

Plugin d'Archiviazione

Cos'è un Plugin d'Archiviazione?

Verdaccio usa un plugin d'archiviazione dei file di sistema predefinito: local-storage. L'archiviazione predefinita è facilmente sostituibile, usando un plugin della community o creandone uno proprio.

API

I plugin sono composti da due oggetti, IPluginStorage<T> e IPackageStorage.

  • L'oggetto IPluginStorage gestisce il database locale per i pacchetti privati.
  interface IPluginStorage<T> extends IPlugin<T>, ITokenActions {
logger: Logger;
config: T & Config;
add(name: string, callback: Callback): void;
remove(name: string, callback: Callback): void;
get(callback: Callback): void;
getSecret(): Promise<string>;
setSecret(secret: string): Promise<any>;
getPackageStorage(packageInfo: string): IPackageStorage;
search(onPackage: onSearchPackage, onEnd: onEndSearchPackage, validateName: onValidatePackage): void;
}
  • IPackageStorage è un oggetto creato da ogni richiesta che gestisce le azioni I/O per i meta-dati e gli archivi tar.
interface IPackageStorage {
logger: Logger;
writeTarball(pkgName: string): IUploadTarball;
readTarball(pkgName: string): IReadTarball;
readPackage(fileName: string, callback: ReadPackageCallback): void;
createPackage(pkgName: string, value: Package, cb: CallbackAction): void;
deletePackage(fileName: string, callback: CallbackAction): void;
removePackage(callback: CallbackAction): void;
updatePackage(
pkgFileName: string,
updateHandler: StorageUpdateCallback,
onWrite: StorageWriteCallback,
transformPackage: PackageTransformer,
onEnd: CallbackAction
): void;
savePackage(fileName: string, json: Package, callback: CallbackAction): void;
}

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? archiviazione
? Sei pregato di descrivere il fantastico plugin d'archiviazione 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,storage,awesome,verdaccio-plugin
create verdaccio-plugin-storage-package-database/package.json
create verdaccio-plugin-storage-package-database/.gitignore
create verdaccio-plugin-storage-package-database/.npmignore
create verdaccio-plugin-storage-package-database/jest.config.js
create verdaccio-plugin-storage-package-database/.babelrc
create verdaccio-plugin-storage-package-database/.travis.yml
create verdaccio-plugin-storage-package-database/README.md
create verdaccio-plugin-storage-package-database/.eslintrc
create verdaccio-plugin-storage-package-database/.eslintignore
create verdaccio-plugin-storage-package-database/src/PackageStorage.ts
create verdaccio-plugin-storage-package-database/src/index.ts
create verdaccio-plugin-storage-package-database/src/plugin.ts
create verdaccio-plugin-storage-package-database/index.ts
create verdaccio-plugin-storage-package-database/tsconfig.json
create verdaccio-plugin-storage-package-database/types/index.ts
create verdaccio-plugin-storage-package-database/.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

Elenco di Plugin d'Archiviazione della Community

Il seguente elenco di plugin implementano l'API d'Archiviazione e potrebbero esser usati come esempio.