1
0
mirror of https://github.com/verdaccio/verdaccio.git synced 2024-11-13 03:35:52 +01:00
verdaccio/website/translated_docs/pl-PL/dev-plugins.md
VerdaccioBot 5980708f00 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

6.4 KiB

id title
dev-plugins Tworzenie wtyczek

Istnieje wiele sposobów na rozszerzenie funkcjonalności verdaccio, wspierane są następujące rodzaje wtyczek:

  • Wtyczki uwierzytelniania
  • Wtyczki oprogramowania pośredniego (od wersji v2.7.0)
  • Wtyczki magazynu danych od wersji (v3.x)

We recommend developing plugins using our flow type definitions.

Wtyczka uwierzytelniania

Musimy tylko zwrócić obiekt pojedynczą metodą authenticate, która otrzyma 3 argumenty (user, password, callback).

API

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;
}

Tylko dduser, allow_access i allow_publish są opcjonalne, verdaccio zapewnia cofnięcie we wszystkich tych przypadkach.

Callback

Po wykonaniu uwierzytelniania mamy 2 opcje na odpowiedź do verdaccio.

OnError

Gdy coś złego się wydarzy, lub uwierzytelnianie nie powiedzie się.

callback(null, false)
OnSuccess

Uwierzytelnianie zakończone sukcesem.

grupy to tablica ciągów znaków, w których użytkownik jest częścią.

 callback(null, groups);

Example

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;

Konfiguracja będzie wyglądać następująco:

auth:
  htpasswd:
    file: ./htpasswd

Gdzie htpasswd jest przyrostkiem nazwy wtyczki. np: verdaccio-htpasswd, a reszta będzie parametrem konfiguracyjnym wtyczki.

Wtyczka oprogramowania pośredniego

Wtyczki pośrednie mają możliwość modyfikowania warstwy API, dodając nowe punkty końcowe lub przechwytywania żądań.

interface verdaccio$IPluginMiddleware extends verdaccio$IPlugin {
  register_middlewares(app: any, auth: IBasicAuth, storage: IStorageManager): void;
}

register_middlewares

Metoda zapewnia pełny dostęp do uwierzytelniania i przechowywania za pomocą auth i storage. app to ekspresowa aplikacja, która pozwala dodawać nowe punkty końcowe.

A pretty good example of middleware plugin is the sinopia-github-oauth and verdaccio-audit.

API

function register_middlewares(expressApp, authInstance, storageInstance) {
   /* more stuff */
}

Aby zarejestrować oprogramowanie pośrednie potrzebujemy obiekt z pojedynczą metodą register_middlewares, która otrzyma 3 argumenty (expressApp, auth, storage). Auth to instancja uwierzytelniania, a storage to także główna instancja Storage, która zapewnia dostęp do wszystkich działań związanych z pamięcią masową.

Wtyczka magazynu danych

Verdaccio by default uses a file system storage plugin local-storage, but, since verdaccio@3.x you can plug in a custom storage replacing the default behaviour.

API

API magazynu danych jest trochę bardziej skomplikowane, będziesz musiał stworzyć klasę, która zwraca implementację IPluginStorage. Poniżej zapoznasz się ze szczegółami.

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;
}

API magazynu danych jest nadal w fazie eksperymentalnej i może się zmienić w następnej pomniejszej wersji. For further information about Storage API please follow the types definitions in our official repository.

Przykłady wtyczek magazynu danych

Poniższa lista wtyczek wdraża API magazynu danych oraz mogą być użyte jako przykład.

Chciałbyś współtworzyć ten projekt z nowymi wtyczkami magazynu danych? Kliknij tutaj.