Salta al contenuto principale
Versione: Successivo

API di Node.js

Verdaccio è un comando binario, disponibile nel tuo ambiente quando installi globalmente il pacchetto; es. npm i -g verdaccio, ma può anche essere la dipendenza nel tuo progetto e la utilizzi programmaticamente.

Utilizzare fork dal modulo child_process

Utilizzare il binario è il metodo più veloce per utilizzare Verdaccio programmaticamente: devi aggiungere _debug: true al file di configurazione per abilitare il sistema di messaggistica; quando Verdaccio è pronto, invierà la stringa verdaccio_started come messaggio, come nell'esempio seguente.

Se stai utilizzando i moduli ESM, require non sarà disponibile.

export function runRegistry(args: string[] = [], childOptions: {}): Promise<ChildProcess> {
return new Promise((resolve, reject) => {
const childFork = fork(require.resolve('verdaccio/bin/verdaccio'), args, childOptions);
childFork.on('message', (msg: { verdaccio_started: boolean }) => {
if (msg.verdaccio_started) {
resolve(childFork);
}
});
childFork.on('error', (err: any) => reject([err]));
childFork.on('disconnect', (err: any) => reject([err]));
});
}

Puoi visualizzare l'esempio completo su questa repository.

https://github.com/juanpicado/verdaccio-fork

Utilizzare l'API del modulo

Funzionalità disponibile alla v5.11.0 e superiori.

L'utilizzo di const verdaccio = require('verdaccio'); come il modulo predefinito è sconsigliato: è deprecato e si consiglia l'utilizzo di runServer per la compatibilità futura.

Esistono tre modi per utilizzarlo:

  • Nessun input, troverà config.yaml così com'è ed eseguirà verdaccio nella console.
  • Con un percorso assoluto.
  • Con un oggetto (vedi sotto).
    const {runServer} = require('verdaccio');
const app = await runServer(); // default configuration
const app = await runServer('./config/config.yaml');
const app = await runServer({ configuration });
app.listen(4000, (event) => {
// do something
});

Con un oggetto, devi aggiungere manualmente self_path (non è il massimo, ma sarebbe una modifica dell'ultimo minuto); alla v6 non è più necessario.

const { runServer, parseConfigFile } = require('verdaccio');
const configPath = join(__dirname, './config.yaml');
const c = parseConfigFile(configPath);
// workaround
// sulla v5 `self_path` esiste ancora e sarà rimosso nella v6
c.self_path = 'foo';
runServer(c).then(() => {});

Funzionalità disponibile prima della v5.11.0.

Questo è un metodo valido, ma è sconsigliato per le release future.

const fs = require('fs');
const path = require('path');
const verdaccio = require('verdaccio').default;
const YAML = require('js-yaml');

const getConfig = () => {
return YAML.load(fs.readFileSync(path.join(__dirname, 'config.yaml'), 'utf8'));
};

const cache = path.join(__dirname, 'cache');
const config = Object.assign({}, getConfig(), {
self_path: cache,
});

verdaccio(config, 6000, cache, '1.0.0', 'verdaccio', (webServer, addrs, pkgName, pkgVersion) => {
try {
webServer.unref();
webServer.listen(addrs.port || addrs.path, addrs.host, () => {
console.log('verdaccio running');
});
} catch (error) {
console.error(error);
}
});