Edit - Risposte rapide
Dopo ho risposto, ho continuato a leggere fonte Tabtab un po 'e ho notato che posso anche correre
pkgname completion install
per installare il completamento. dal momento che il mio ambiente era già sporco, non so se in realtà ha fatto nulla, ma mi sembra come ha fatto ..
Longer risposta
@CameronLittle ha dato grande documentazione.
Per gli impazienti, si può iniziare eseguendo
sudo bash -c 'pkgname completion > /etc/bash_completion.d/pkgname'
source /etc/bash_completion.d/pkgname
Questo aggiungerà completamento alla corrente sessione di bash.
Per quanto ne so, le nuove sessioni completeranno automaticamente il completamento.
per rendere il processo senza soluzione di continuità per l'utente, è possibile utilizzare i install
e postinstall
ganci in package.json
https://docs.npmjs.com/misc/scripts
Assicurarsi di non stampare qualsiasi cosa per impostazione predefinita. significa che l'esecuzione di pkgname
non dovrebbe produrre output, o altrimenti non funzionerà.
importante!installare Tabtab solo dal maestro
sembra Tabtab ha un fastidioso bug che è stato risolto in padrone, ma non ha mai avuto in un rilascio ..
La rilevanti si impegnano a risolvere il problema è questo: https://github.com/mklabs/node-tabtab/commit/f8473555bf7278a300eae31cbe3377421e2eeb26
che gestisce completamento per stringhe che iniziano con --
.
Il commit se da febbraio 2014, tuttavia l'ultima versione a partire da (gennaio 2015) è 0.0.2 da gennaio 2014. Presumo che non ci saranno più versioni.
Quindi, se si desidera ottenere questa correzione, e si dovrebbe (!), Installare tabtab solo dal master.
non sprecare 2 ore per capire cosa avete sbagliato come me :)
Come ha raggiungo questa risposta? TL; DR
Mentre la risposta di @ CameronLittle fornisce la spiegazione dietro la scena, vorrei spiegare come ho raggiunto la risposta.
Ho provato a utilizzare il pacchetto tabtab
che ha una sezione esplicita sull'installazione. vedi https://www.npmjs.com/package/tabtab#completion-install
Tuttavia, quello non sembra funzionare per me.
Guardando il codice che istruiscono da aggiungere, compaiono i seguenti process.argv.slice(2)[0] === 'completion'
che mi ha fatto funzionare l'ordine pkgname completion
, il quale emette qualcosa che inizia con
###-begin-pkgname-completion-###
### credits to npm, this file is coming directly from isaacs/npm repo
#
# Just testing for now. (trying to learn this cool stuff)
#
# npm command completion script
#
# Installation: pkgname completion >> ~/.bashrc (or ~/.zshrc)
#
le parole this file is coming directly from isaacs/npm repo
mi sono chiesto più. seguendo l'altra risposta, ho visto /etc/bash_completion.d/npm - che ha mostrato lo stesso contenuto esatto .. e quindi il commento.
ho deciso di correre
pkgname completion > /etc/bash_completion.d/pkgname
, tuttavia, che richiede autorizzazioni sudo e così diventa
sudo bash -c "pkgname completion > /etc/bash_completion.d/pkgname
e poi, al fine di applicarlo alla corrente sessione di bash ho dovuto correre
source /etc/bash_completion.d/pkgname
e voilà! Funziona!
quando ho provato ad aprire un altro terminale, ha funzionato ancora, quindi presumo che si applicherà a tutti gli utenti. in caso contrario, dovresti aggiungerlo a .bashrc o qualcosa del genere.
Questo non è qualcosa implementato nella tua app ma all'interno della shell che l'utente utilizza. Vedi http://askubuntu.com/questions/95211/how-do-i-set-up-bash-completion-for-command-arguments per come 'bash' fa questo. – Joe
Sono sulla stessa situazione. Già trovato diversi moduli 'npm' per gestire il completamento ma non riesco a capire come eseguire gli esempi. – diosney
@diosney. Così ho iniziato a lavorare su un progetto in cui è presente. Https://github.com/Jonovono/um. Presenterò una risposta più completa su come sto ottenendo questo risultato. – Jonovono