Salta al contenuto principale
Versione: Successivo

Estensioni

Verdaccio è un'applicazione estensibile. Si può espandere in molti modi, o con nuovi metodi di autenticazione, aggiungendo endpoint o utilizzando un archivio personalizzato.

Sono presenti 4 tipi di plugin:

Utilizzo

Installazione

$> npm install --global verdaccio-activedirectory

verdaccio essendo una fork di sinopia è retrocompatibile con i plugin compatibili con sinopia@1.4.0. In tal caso l'installazione è la stessa.

$> npm install --global sinopia-memory

Configurazione

Aprire il file config.yaml e aggiornare la sezione auth come segue:

La configurazione predefinita appare così, poiché usiamo un plugin htpasswd incorporato di default che si può disabilitare commentando le seguenti linee.

Convenzioni di nomenclatura

Dalla versione 2.0.0 fino alla presente, i plugin devono seguire la seguente convenzione:

  • sinopia-xxx (deprecato, sarà rimosso alla 6.x.x)
  • verdaccio-xxx

Dopo la versione 5.12.0, sono supportati i plugin d'ambito, ad esempio:

auth:
'@my-org/auth-awesome-plugin':
foo: some value
bar: another value
store:
'@my-org/store-awesome-plugin':
foo: some value
bar: another value
middleware:
'@my-org/middleware-awesome-plugin':
foo: some value
bar: another value

Configurazione dell'Autenticazione

auth:
htpasswd:
file: ./htpasswd
# max_users: 1000

e sostituendoli con (nel caso tu decida di utilizzare un plugin ldap.

auth:
activedirectory:
url: 'ldap://10.0.100.1'
baseDN: 'dc=sample,dc=local'
domainSuffix: 'sample.local'

Plugin di Autenticazione Multipla

Ciò è tecnicamente possibile, rendendo importante l'ordine del plugin, poiché le credenziali saranno risolte in ordine.

auth:
htpasswd:
file: ./htpasswd
#max_users: 1000
activedirectory:
url: 'ldap://10.0.100.1'
baseDN: 'dc=sample,dc=local'
domainSuffix: 'sample.local'

Configurazione del Middleware

Esempio di configurazione di un plugin del middleware. Tutti i plugin di middleware devono essere definiti nello spazio del nome middlewares.

middlewares:
audit:
enabled: true

Potresti seguire il plugin medio di controllo come esempio di base.

Configurazione dell'Archiviazione

attenzione

Se la proprietà store è definita nel file config.yaml, la proprietà storage sarà ignorata.

Esempio di configurazione di un plugin d'archiviazione. Tutti i plugin d'archiviazione devono essere definiti nello spazio del nome del negozio.

store:
memory:
limit: 1000

Configurazione del Tema

npm install --global verdaccio-theme-dark

Puoi caricare soltanto un tema per volta e revisionarne le opzioni, se necessario.

theme:
dark:
option1: foo
option2: bar

Configurazione del filtro (Sperimentale)

Un esempio reale dal plugin di filtraggio npm i -g verdaccio-plugin-secfilter.

filters:
plugin-secfilter:
block:
- scope: @evil # blocca tutti i pacchetti nell'ambito
- package: semvver # blocca un pacchetto dannoso
- package: @coolauthor/stolen
versions: '>2.0.1' # blocca alcune versioni dannose del pacchetto precedentemente ok
# uses https://www.npmjs.com/package/semver syntax

Plugin ereditari

Plugin di Sinopia

attenzione

Dopo la versione 6, i plugin di Sinopia non sono più supportati a causa della convenzione di nomenclatura.

Se ti affidi a qualsiasi plugin di Sinopia, ricorda che sono deprecati e potrebbero non funzionare in futuro.

Tutti i plugin di Sinopia dovrebbero essere compatibili con tutte le versioni future di Verdaccio. Tuttavia, incoraggiamo i collaboratori a migrarli all'API moderna di Verdaccio e di utilizzare il prefisso verdaccio-xx-name.