Memang benar proses terbina dalam.agrv digunakan untuk pemprosesan sebelumnya Ini boleh berfungsi, tetapi ia tidak mudah digunakan, jadi TJ master menulis satu, Tuhanku, yang benar-benar unggul:
1. Pemasangan
npm install commander
2. Analisis pilihan
Pilihan dengan komander ditakrifkan dengan kaedah .option(), juga berfungsi sebagai dokumentasi untuk pilihan Contoh di bawah menghuraikan args dan pilihan daripada process.argv, meninggalkan baki args sebagai tatasusunan program.args yang tidak digunakan oleh. pilihan.
#!/usr/bin/env nod
/**
* Kebergantungan modul.
*/
var program = memerlukan('komander');
program
.version('0.0.1')
.option('-p, --peppers', 'Tambah lada')
.option('-P, --pineapple', 'Tambah nanas')
.option('-b, --bbq', 'Tambah sos bbq')
.option('-c, --cheese [type]', 'Tambah jenis keju [marmar]' yang ditentukan, 'marmar')
.parse(process.argv);
console.log('anda memesan piza dengan:');
if (program.peppers) console.log(' - peppers');
if (program.pineapple) console.log(' - pineapple');
if (program.bbq) console.log(' - bbq');
console.log(' - %s keju', program.cheese);
Bendera pendek boleh dihantar sebagai arg tunggal, contohnya -abc bersamaan dengan -a -b -c pilihan berbilang perkataan seperti “–template-engine” bersarung unta, menjadi program.templateEngine dsb.
3 Menjana maklumat bantuan secara automatik
$ ./examples/pizza --help
Penggunaan: piza [pilihan]
Pilihan:
-V, --versi mengeluarkan nombor versi
-p, --lada Masukkan lada
-P, --nanas Tambah nanas
-b, --bbq Masukkan sos bbq
-c, --cheese Tambahkan jenis keju [marmar]
yang ditentukan
-h, --membantu mengeluarkan maklumat penggunaan
Sudah tentu anda juga boleh menjananya secara manual:
#!/usr/bin/env nod
/**
* Kebergantungan modul.
*/
var program = memerlukan('../');
senarai fungsi(val) {
Kembalikan val.split(',').map(Nombor);
}
program
.version('0.0.1')
.option('-f, --foo', 'dayakan beberapa foo')
.option('-b, --bar', 'dayakan beberapa bar')
.option('-B, --baz', 'dayakan beberapa baz');
// mestilah sebelum .parse() sejak
// nod's emit() adalah serta-merta
program.on('--help', function(){
console.log(' Contoh:');
console.log('');
console.log(' $ custom-help --help');
console.log(' $ custom-help -h');
console.log('');
});
program.parse(process.argv);
console.log('barang');
4. Berikan contoh lengkap
julat fungsi(val) {
return val.split('..').map(Nombor);
}
senarai fungsi(val) {
kembalikan val.split(',');
}
function collect(val, memo) {
memo.push(val);
pulangkan memo;
}
fungsi meningkatkanVerbosity(v, jumlah) {
pulangkan jumlah 1;
}
program
.version('0.0.1')
.usage('[options]
')
.option('-i, --integer ', 'Argumen integer', parseInt)
.option('-f, --float ', 'Argumen apungan', parseFloat)
.option('-r, --range ..', 'Julat', julat)
.option('-l, --list - ', 'Senarai', senarai)
.option('-o, --optional [value]', 'An optional value')
.option('-c, --collect [value]', 'A repeatable value', collect, [])
.option('-v, --verbose', 'Nilai yang boleh ditingkatkan', increaseVerbosity, 0)
.parse(process.argv);
console.log(' int: %j', program.integer);
console.log(' float: %j', program.float);
console.log(' pilihan: %j', program.optional);
program.range = program.range || [];
console.log(' julat: %j..%j', program.range[0], program.range[1]);
console.log(' list: %j', program.list);
console.log(' collect: %j', program.collect);
console.log(' verbosity: %j', program.verbose);
console.log(' args: %j', program.args);