Plugin d'Archiviazione
Cos'è un plugin di 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.
- verdaccio-memory Plugin d'archiviazione per ospitare pacchetti in Memoria
- verdaccio-s3-storage Plugin d'archiviazione per ospitare pacchetti di Amazon S3
- verdaccio-aws-s3-storage: Plugin d'archiviazione per ospitare i pacchetti Amazon S3 (mantenuto dal team principale di Verdaccio)
- verdaccio-google-cloud Plugin d'archiviazione per ospitare pacchetti di Google Cloud Storage
- verdaccio-minio Un plugin di Verdaccio per archiviare dati su Minio
- verdaccio-offline-storage Plugin d'archiviazione locale, MA con pacchetti disponibili localmente come cittadini di prima classe.