Diakui, pemrosesan sebelumnya menggunakan proses built-in.agrv, yang dapat bekerja, tetapi tidak mudah untuk bekerja, jadi master tj menulis "Tuhanku", yang benar-benar kelas atas:
1. Instalasi
Salinan kode adalah sebagai berikut:
NPM Instal Commander
2. Analisis Opsi
Opsi dengan komandan didefinisikan dengan metode .option (), juga berfungsi sebagai dokumentasi untuk opsi. Contoh di bawah ini parse arg dan opsi dari proses.argv, meninggalkan arg yang tersisa sebagai program. Array yang tidak dikonsumsi oleh opsi.
Salinan kode adalah sebagai berikut:
#!/USR/BIN/Env node
/**
* Dependensi modul.
*/
var program = membutuhkan ('komandan');
Program
.Version ('0.0.1')
.option ('-p, --peppers', 'tambahkan paprika')
.option ('-p, --pineApple', 'Tambahkan nanas')
.Option ('-b, --bq', 'Tambahkan Saus BBQ')
.option ('-c, --cheese [type]', 'Tambahkan jenis keju [marmer]', 'marmer') yang ditentukan
.parse (proses.argv);
console.log ('Anda memesan pizza dengan:');
if (program.peppers) console.log (' - paprika');
if (program.pineApple) console.log (' - nanas');
if (program.bbq) console.log (' - bbq');
console.log (' - %s keju', program.cheese);
Bendera pendek dapat dilewati sebagai arg tunggal, misalnya -ABC setara dengan -a -b -c. Opsi multi-kata seperti "Template-Engine" adalah Camel-cased, menjadi program. TemplatEngine dll.
3. Secara otomatis menghasilkan informasi bantuan
Salinan kode adalah sebagai berikut:
$ ./examples/pizza --help
Penggunaan: Pizza [Opsi]
Opsi:
-V, -output output nomor versi
-p, --peppers menambahkan paprika
-P, - -PineApple Tambahkan nanas
-B, --BQ Tambahkan saus BBQ
-c, --cheese <ype> Tambahkan jenis keju yang ditentukan [marmer]
-H, -informasi penggunaan output
Tentu saja Anda juga dapat menghasilkan secara manual:
Salinan kode adalah sebagai berikut:
#!/USR/BIN/Env node
/**
* Dependensi modul.
*/
var program = membutuhkan ('../');
daftar fungsi (val) {
return val.split (','). Map (nomor);
}
Program
.Version ('0.0.1')
.option ('-f, --foo', 'aktifkan beberapa foo')
.option ('-b,-bar', 'aktifkan beberapa bar')
.option ('-b,-baz', 'memungkinkan beberapa baz');
// harus sebelum .parse () karena
// Node's Emit () adalah langsung
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 ('stuff');
4. Berikan contoh lengkap
Salinan kode adalah sebagai berikut:
rentang fungsi (val) {
return val.split ('..'). Map (nomor);
}
daftar fungsi (val) {
return val.split (',');
}
function collect (val, memo) {
memo.push (val);
memo kembali;
}
function peningkatan Everbositas (v, total) {
Total pengembalian + 1;
}
Program
.Version ('0.0.1')
.usage ('[option] <file ...>')
.option ('-i, --integer <n>', 'Argumen Integer', ParseInt)
.option ('-f, --float <n>', 'argumen float', parsefloat)
.Option ('-r,-rentang <a> .. <b>', 'rentang', rentang)
.Option ('-l,-list <Tertems>', 'A List', List)
.option ('-o, --opsional [nilai]', 'nilai opsional')
.option ('-c,--collect [value]', 'nilai berulang', kumpulkan, [])
.Option ('-v, --verbose', 'nilai yang dapat ditingkatkan', kenaikan Exprined, 0)
.parse (proses.argv);
console.log ('int: %j', program.integer);
console.log ('float: %j', program.float);
Console.log ('Opsional: %j', Program.Optional);
Program.range = Program.Range || [];
console.log ('rentang: %j .. %j', program.range [0], program.range [1]);
console.log ('Daftar: %j', Program.list);
Console.log ('Collect: %j', Program.Collect);
console.log ('verbosity: %j', Program.Verbose);
console.log ('args: %j', program.args);