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
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
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.
- sinopia-npm: plugin d'autenticazione per Sinopia che supporta un registro npm.
- sinopia-memory: Plugin d'autenticazione per Sinopia che mantiene in memoria gli utenti.
- sinopia-github-oauth-cli.
- sinopia-crowd: plugin d'autenticazione per Sinopia che supporta Atlassian Crowd.
- sinopia-activedirectory: plugin d'autenticazione per Sinopia della Cartella Attiva.
- sinopia-github-oauth: plugin d'autenticazione per Sinopia2, che supporta il flusso web di OAuth di GitHub.
- sinopia-delegated-auth: plugin d'autenticazione per Sinopia che delega l'autenticazione a un altro URL HTTP
- sinopia-altldap: plugin d'autenticazione LDAP alternativo per Sinopia
- sinopia-request: Un plugin d'autenticazione semplice e completo con una configurazione da utilizzare per un'API esterna.
- sinopia-htaccess-gpg-email: Genera password nel formato htaccess, crittografala con GPG e inviala tramite l'API di MailGun agli utenti.
- sinopia-mongodb: Un plugin auth semplice e completo con la configurazione per utilizzare un database mongodb.
- sinopia-htpasswd: plugin d'autenticazione per Sinopia che supporta il formato htpasswd.
- sinopia-leveldb: un plugin d'autenticazione per l'npm privato di Sinopia, supportato da leveldb.
- sinopia-gitlabheres: plugin d'autenticazione di GitHub per Sinopia.
- sinopia-gitlab: plugin d'autenticazione per Sinopia di Gitlab
- sinopia-ldap: plugin d'autenticazione LDAP per Sinopia.
- sinopia-github-oauth-env: plugin d'autenticazione per Sinopia con flusso web OAuth di GitHub.
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.