0
Fork 0
mirror of https://github.com/verdaccio/verdaccio.git synced 2025-02-17 23:45:29 -05:00
verdaccio/website/translated_docs/it-IT/dev-plugins.md

188 lines
6.5 KiB
Markdown
Raw Normal View History

New Crowdin translations (#1119) * New translations test.md (Portuguese, Brazilian) docs(website): new translations * New translations ansible.md (Russian) docs(website): new translations * New translations auth.md (Russian) docs(website): new translations * New translations reverse-proxy.md (Russian) docs(website): new translations * New translations logo.md (Russian) docs(website): new translations * New translations chef.md (Russian) docs(website): new translations * New translations puppet.md (Russian) docs(website): new translations * New translations ci.md (Russian) docs(website): new translations * New translations what-is-verdaccio.md (Russian) docs(website): new translations * New translations node-api.md (Russian) docs(website): new translations * New translations windows.md (Russian) docs(website): new translations * New translations web.md (Russian) docs(website): new translations * New translations use-cases.md (Russian) docs(website): new translations * New translations uplinks.md (Russian) docs(website): new translations * New translations test.md (Russian) docs(website): new translations * New translations ssl.md (Russian) docs(website): new translations * New translations server.md (Russian) docs(website): new translations * New translations repositories.md (Russian) docs(website): new translations * New translations build.md (Russian) docs(website): new translations * New translations protect-your-dependencies.md (Russian) docs(website): new translations * New translations plugins.md (Russian) docs(website): new translations * New translations packages.md (Russian) docs(website): new translations * New translations notifications.md (Russian) docs(website): new translations * New translations logger.md (Russian) docs(website): new translations * New translations kubernetes.md (Russian) docs(website): new translations * New translations install.md (Russian) docs(website): new translations * New translations iis-server.md (Russian) docs(website): new translations * New translations docker.md (Russian) docs(website): new translations * New translations dev-plugins.md (Russian) docs(website): new translations * New translations contributing.md (Russian) docs(website): new translations * New translations config.md (Russian) docs(website): new translations * New translations cli.md (Russian) docs(website): new translations * New translations ansible.md (Serbian (Cyrillic)) docs(website): new translations * New translations reverse-proxy.md (Polish) docs(website): new translations * New translations logo.md (Polish) docs(website): new translations * New translations chef.md (Polish) docs(website): new translations * New translations puppet.md (Polish) docs(website): new translations * New translations ci.md (Polish) docs(website): new translations * New translations what-is-verdaccio.md (Polish) docs(website): new translations * New translations node-api.md (Polish) docs(website): new translations * New translations windows.md (Polish) docs(website): new translations * New translations web.md (Polish) docs(website): new translations * New translations use-cases.md (Polish) docs(website): new translations * New translations uplinks.md (Polish) docs(website): new translations * New translations test.md (Polish) docs(website): new translations * New translations ssl.md (Polish) docs(website): new translations * New translations server.md (Polish) docs(website): new translations * New translations repositories.md (Polish) docs(website): new translations * New translations protect-your-dependencies.md (Polish) docs(website): new translations * New translations plugins.md (Polish) docs(website): new translations * New translations packages.md (Polish) docs(website): new translations * New translations notifications.md (Polish) docs(website): new translations * New translations logger.md (Polish) docs(website): new translations * New translations kubernetes.md (Polish) docs(website): new translations * New translations install.md (Polish) docs(website): new translations * New translations iis-server.md (Polish) docs(website): new translations * New translations docker.md (Polish) docs(website): new translations * New translations dev-plugins.md (Polish) docs(website): new translations * New translations contributing.md (Polish) docs(website): new translations * New translations config.md (Polish) docs(website): new translations * New translations cli.md (Polish) docs(website): new translations * New translations test.md (Portuguese) docs(website): new translations * New translations auth.md (Serbian (Cyrillic)) docs(website): new translations * New translations auth.md (Polish) docs(website): new translations * New translations test.md (Spanish) docs(website): new translations * New translations ansible.md (Vietnamese) docs(website): new translations * New translations auth.md (Vietnamese) docs(website): new translations * New translations reverse-proxy.md (Vietnamese) docs(website): new translations * New translations logo.md (Vietnamese) docs(website): new translations * New translations chef.md (Vietnamese) docs(website): new translations * New translations puppet.md (Vietnamese) docs(website): new translations * New translations ci.md (Vietnamese) docs(website): new translations * New translations what-is-verdaccio.md (Vietnamese) docs(website): new translations * New translations node-api.md (Vietnamese) docs(website): new translations * New translations windows.md (Vietnamese) docs(website): new translations * New translations web.md (Vietnamese) docs(website): new translations * New translations use-cases.md (Vietnamese) docs(website): new translations * New translations uplinks.md (Vietnamese) docs(website): new translations * New translations test.md (Vietnamese) docs(website): new translations * New translations ssl.md (Vietnamese) docs(website): new translations * New translations server.md (Vietnamese) docs(website): new translations * New translations repositories.md (Vietnamese) docs(website): new translations * New translations build.md (Vietnamese) docs(website): new translations * New translations protect-your-dependencies.md (Vietnamese) docs(website): new translations * New translations plugins.md (Vietnamese) docs(website): new translations * New translations packages.md (Vietnamese) docs(website): new translations * New translations notifications.md (Vietnamese) docs(website): new translations * New translations logger.md (Vietnamese) docs(website): new translations * New translations kubernetes.md (Vietnamese) docs(website): new translations * New translations install.md (Vietnamese) docs(website): new translations * New translations iis-server.md (Vietnamese) docs(website): new translations * New translations docker.md (Vietnamese) docs(website): new translations * New translations dev-plugins.md (Vietnamese) docs(website): new translations * New translations contributing.md (Vietnamese) docs(website): new translations * New translations config.md (Vietnamese) docs(website): new translations * New translations cli.md (Vietnamese) docs(website): new translations * New translations build.md (Serbian (Cyrillic)) docs(website): new translations * New translations reverse-proxy.md (Serbian (Cyrillic)) docs(website): new translations * New translations logo.md (Serbian (Cyrillic)) docs(website): new translations * New translations chef.md (Serbian (Cyrillic)) docs(website): new translations * New translations puppet.md (Serbian (Cyrillic)) docs(website): new translations * New translations ci.md (Serbian (Cyrillic)) docs(website): new translations * New translations what-is-verdaccio.md (Serbian (Cyrillic)) docs(website): new translations * New translations node-api.md (Serbian (Cyrillic)) docs(website): new translations * New translations windows.md (Serbian (Cyrillic)) docs(website): new translations * New translations web.md (Serbian (Cyrillic)) docs(website): new translations * New translations use-cases.md (Serbian (Cyrillic)) docs(website): new translations * New translations uplinks.md (Serbian (Cyrillic)) docs(website): new translations * New translations test.md (Serbian (Cyrillic)) docs(website): new translations * New translations ssl.md (Serbian (Cyrillic)) docs(website): new translations * New translations server.md (Serbian (Cyrillic)) docs(website): new translations * New translations repositories.md (Serbian (Cyrillic)) docs(website): new translations * New translations protect-your-dependencies.md (Serbian (Cyrillic)) docs(website): new translations * New translations plugins.md (Serbian (Cyrillic)) docs(website): new translations * New translations packages.md (Serbian (Cyrillic)) docs(website): new translations * New translations notifications.md (Serbian (Cyrillic)) docs(website): new translations * New translations logger.md (Serbian (Cyrillic)) docs(website): new translations * New translations kubernetes.md (Serbian (Cyrillic)) docs(website): new translations * New translations install.md (Serbian (Cyrillic)) docs(website): new translations * New translations iis-server.md (Serbian (Cyrillic)) docs(website): new translations * New translations docker.md (Serbian (Cyrillic)) docs(website): new translations * New translations dev-plugins.md (Serbian (Cyrillic)) docs(website): new translations * New translations contributing.md (Serbian (Cyrillic)) docs(website): new translations * New translations config.md (Serbian (Cyrillic)) docs(website): new translations * New translations cli.md (Serbian (Cyrillic)) docs(website): new translations * New translations test.md (Serbian (Latin)) docs(website): new translations * New translations build.md (Polish) docs(website): new translations * New translations ansible.md (Polish) docs(website): new translations * New translations repositories.md (French) docs(website): new translations * New translations chef.md (French) docs(website): new translations * New translations puppet.md (French) docs(website): new translations * New translations ci.md (French) docs(website): new translations * New translations what-is-verdaccio.md (French) docs(website): new translations * New translations node-api.md (French) docs(website): new translations * New translations windows.md (French) docs(website): new translations * New translations web.md (French) docs(website): new translations * New translations use-cases.md (French) docs(website): new translations * New translations uplinks.md (French) docs(website): new translations * New translations test.md (French) docs(website): new translations * New translations ssl.md (French) docs(website): new translations * New translations server.md (French) docs(website): new translations * New translations reverse-proxy.md (French) docs(website): new translations * New translations protect-your-dependencies.md (French) docs(website): new translations * New translations plugins.md (French) docs(website): new translations * New translations packages.md (French) docs(website): new translations * New translations notifications.md (French) docs(website): new translations * New translations logger.md (French) docs(website): new translations * New translations kubernetes.md (French) docs(website): new translations * New translations install.md (French) docs(website): new translations * New translations iis-server.md (French) docs(website): new translations * New translations docker.md (French) docs(website): new translations * New translations dev-plugins.md (French) docs(website): new translations * New translations contributing.md (French) docs(website): new translations * New translations config.md (French) docs(website): new translations * New translations cli.md (French) docs(website): new translations * New translations build.md (French) docs(website): new translations * New translations logo.md (French) docs(website): new translations * New translations ansible.md (French) docs(website): new translations * New translations test.md (German) docs(website): new translations * New translations auth.md (French) docs(website): new translations * New translations test.md (Arabic) docs(website): new translations * New translations test.md (Chinese Simplified) docs(website): new translations * New translations test.md (Japanese) docs(website): new translations * New translations test.md (Korean) docs(website): new translations * New translations test.md (Hindi) docs(website): new translations * New translations ansible.md (Italian) docs(website): new translations * New translations reverse-proxy.md (Italian) docs(website): new translations * New translations logo.md (Italian) docs(website): new translations * New translations chef.md (Italian) docs(website): new translations * New translations puppet.md (Italian) docs(website): new translations * New translations ci.md (Italian) docs(website): new translations * New translations what-is-verdaccio.md (Italian) docs(website): new translations * New translations node-api.md (Italian) docs(website): new translations * New translations windows.md (Italian) docs(website): new translations * New translations web.md (Italian) docs(website): new translations * New translations use-cases.md (Italian) docs(website): new translations * New translations uplinks.md (Italian) docs(website): new translations * New translations test.md (Italian) docs(website): new translations * New translations ssl.md (Italian) docs(website): new translations * New translations server.md (Italian) docs(website): new translations * New translations repositories.md (Italian) docs(website): new translations * New translations auth.md (Italian) docs(website): new translations * New translations protect-your-dependencies.md (Italian) docs(website): new translations * New translations plugins.md (Italian) docs(website): new translations * New translations packages.md (Italian) docs(website): new translations * New translations notifications.md (Italian) docs(website): new translations * New translations logger.md (Italian) docs(website): new translations * New translations kubernetes.md (Italian) docs(website): new translations * New translations install.md (Italian) docs(website): new translations * New translations iis-server.md (Italian) docs(website): new translations * New translations docker.md (Italian) docs(website): new translations * New translations dev-plugins.md (Italian) docs(website): new translations * New translations contributing.md (Italian) docs(website): new translations * New translations config.md (Italian) docs(website): new translations * New translations cli.md (Italian) docs(website): new translations * New translations build.md (Italian) docs(website): new translations
2018-11-15 19:03:42 +01:00
---
id: dev-plugins
title: "Sviluppare Estensioni"
---
Esistono diversi modi di ampliare `verdaccio`, i tipi di estensioni supportati sono:
* Plugin di autenticazione
* Plugin Middleware (da `v2.7.0`)
* Plugin di archiviazione da (`v3.x`)
> Consigliamo di sviluppare estensioni utilizzando le nostre [definizioni di tipo di flusso](https://github.com/verdaccio/flow-types).
## Plugin di autenticazione
Fondamentalmente dobbiamo restituire un oggetto con un unico metodo chiamato `authenticate` che riceverà 3 argomenti (`user, password, callback`).
### API
```flow
interface IPluginAuth extends IPlugin {
login_url?: string;
authenticate(user: string, password: string, cb: Callback): void;
adduser(user: string, password: string, cb: Callback): void;
allow_access(user: RemoteUser, pkg: $Subtype<PackageAccess>, cb: Callback): void;
allow_publish(user: RemoteUser, pkg: $Subtype<PackageAccess>, cb: Callback): void;
}
```
> Solamente `adduser`, `allow_access` e `allow_publish` sono facoltativi, verdaccio fornisce una soluzione di ripiego in tutti questi casi.
#### Callback
Una volta che l'autenticazione viene eseguita, esistono 2 possibili opzioni per dare una risposta a `verdaccio`.
###### OnError
Nel caso in cui qualcosa sia andato storto oppure l'auth sia fallita.
```flow
callback(null, false)
```
###### OnSuccess
Nel caso in cui l'auth sia andata a buon fine.
`groups` è un array di stringhe di cui l'utente fa parte.
callback(null, groups);
### Esempio
```javascript
function Auth(config, stuff) {
var self = Object.create(Auth.prototype);
self._users = {};
// config for this module
self._config = config;
// verdaccio logger
self._logger = stuff.logger;
// pass verdaccio logger to ldapauth
self._config.client_options.log = stuff.logger;
return self;
}
Auth.prototype.authenticate = function (user, password, callback) {
var LdapClient = new LdapAuth(self._config.client_options);
....
LdapClient.authenticate(user, password, function (err, ldapUser) {
...
var groups;
...
callback(null, groups);
});
};
module.exports = Auth;
```
E la configurazione apparirà così:
```yaml
auth:
htpasswd:
file: ./htpasswd
```
Dove `htpasswd` è il suffisso del nome del plugin. es: `verdaccio-htpasswd` ed il resto del body sarebbe composto dai parametri di configurazione del plugin.
## Plugin Middleware
Le estensioni Middleware possiedono la capacità di modificare il livello API, aggiungendo nuovi endpoint o intercettando richieste.
```flow
interface verdaccio$IPluginMiddleware extends verdaccio$IPlugin {
register_middlewares(app: any, auth: IBasicAuth, storage: IStorageManager): void;
}
```
### register_middlewares
Questo metodo fornisce un accesso completo all'autenticazione ed all'archiviazione tramite `auth` and `storage`. `app` è l'applicazione rapida che permette l'aggiunta di nuovi endpoint.
> Un bell'esempio di plugin middleware è il [sinopia-github-oauth](https://github.com/soundtrackyourbrand/sinopia-github-oauth) ed il [verdaccio-audit](https://github.com/verdaccio/verdaccio-audit).
### API
```js
function register_middlewares(expressApp, authInstance, storageInstance) {
/* more stuff */
}
```
Per registrare un middleware necessitiamo di un oggetto con un unico metodo chiamato `register_middlewares` il quale riceverà 3 argomenti (`expressApp, auth, storage`). *Auth* è l'istanza di autenticazione e *storage* è anche la principale istanza di Archiviazione che darà accesso a tutte le azioni di memorizzazione.
## Plugin di archiviazione
Verdaccio di default utilizza un'estensione di archiviazione del file system [local-storage](https://github.com/verdaccio/local-storage), ma, dalla versione di `verdaccio@3.x` in poi è possibile collegarne una personalizzata che sostituisca la condotta predefinita.
### API
L'API di archiviazione è un po' più complessa, è necessario creare una classe che restituisca un'implementazione `IPluginStorage`. Si prega di leggere i dettagli qui sotto.
```flow
class LocalDatabase<IPluginStorage>{
constructor(config: $Subtype<verdaccio$Config>, logger: verdaccio$Logger): ILocalData;
}
interface IPluginStorage {
logger: verdaccio$Logger;
config: $Subtype<verdaccio$Config>;
add(name: string, callback: verdaccio$Callback): void;
remove(name: string, callback: verdaccio$Callback): void;
get(callback: verdaccio$Callback): void;
getSecret(): Promise<string>;
setSecret(secret: string): Promise<any>;
getPackageStorage(packageInfo: string): verdaccio$IPackageStorage;
search(onPackage: verdaccio$Callback, onEnd: verdaccio$Callback, validateName: Function): void;
}
interface IPackageStorageManager {
path: string;
logger: verdaccio$Logger;
writeTarball(name: string): verdaccio$IUploadTarball;
readTarball(name: string): verdaccio$IReadTarball;
readPackage(fileName: string, callback: verdaccio$Callback): void;
createPackage(name: string, value: verdaccio$Package, cb: verdaccio$Callback): void;
deletePackage(fileName: string, callback: verdaccio$Callback): void;
removePackage(callback: verdaccio$Callback): void;
updatePackage(pkgFileName: string,
updateHandler: verdaccio$Callback,
onWrite: verdaccio$Callback,
transformPackage: Function,
onEnd: verdaccio$Callback): void;
savePackage(fileName: string, json: verdaccio$Package, callback: verdaccio$Callback): void;
}
class verdaccio$IUploadTarball extends stream$PassThrough {
abort: Function;
done: Function;
_transform: Function;
abort(): void;
done(): void;
}
class verdaccio$IReadTarball extends stream$PassThrough {
abort: Function;
abort(): void;
}
```
> L'API di archiviazione è ancora in via sperimentale e potrebbe cambiare nelle successive versioni minori. Per ulteriori informazioni sull'API di archiviazione si prega di seguire le [ definizioni dei tipi nel nostro archivio ufficiale](https://github.com/verdaccio/flow-types).
### Esempi di Plugin di Archiviazione
Il seguente è un elenco di estensioni che utilizzano l'API di archiviazione e che potrebbero essere utilizzate come esempio.
* [verdaccio-memory](https://github.com/verdaccio/verdaccio-memory)
* [local-storage](https://github.com/verdaccio/local-storage)
* [verdaccio-google-cloud](https://github.com/verdaccio/verdaccio-google-cloud)
* [verdaccio-s3-storage](https://github.com/Remitly/verdaccio-s3-storage/tree/s3)
> Sei disposto a contribuire con nuovi Plugin di Archiviazione? [Clicca qui.](https://github.com/verdaccio/verdaccio/issues/103#issuecomment-357478295)