เป็นที่ยอมรับว่าการประมวลผลก่อนหน้านี้ใช้กระบวนการในตัว AGRV ซึ่งสามารถใช้งานได้ แต่มันไม่ง่ายที่จะทำงานดังนั้น Master TJ จึงเขียน "พระเจ้าของฉัน" ซึ่งเป็นระดับไฮเอนด์อย่างสมบูรณ์:
1. การติดตั้ง
การคัดลอกรหัสมีดังนี้:
ผู้บัญชาการติดตั้ง NPM
2. การวิเคราะห์ตัวเลือก
ตัวเลือกที่มีผู้บัญชาการถูกกำหนดด้วยวิธี. option () ซึ่งทำหน้าที่เป็นเอกสารสำหรับตัวเลือก ตัวอย่างด้านล่างการแยกวิเคราะห์และตัวเลือกจาก process.ARGV ปล่อยให้ args ที่เหลือเป็น program.args อาร์เรย์ซึ่งไม่ได้ใช้โดยตัวเลือก
การคัดลอกรหัสมีดังนี้:
#!/usr/bin/env node
-
* การพึ่งพาโมดูล
-
โปรแกรม var = ต้องการ ('ผู้บัญชาการ');
โปรแกรม
.Version ('0.0.1')
.Option ('-P,-Peppers', 'เพิ่มพริก')
.Option ('-P,-Pineapple', 'เพิ่ม Pineapple')
.Option ('-B,-BBQ', 'เพิ่มซอสบาร์บีคิว')
.Option ('-c,-เชียส [ประเภท]', 'เพิ่มประเภทของชีส [หินอ่อน]', 'หินอ่อน')
.parse (process.argv);
console.log ('คุณสั่งพิซซ่าด้วย:');
if (program.peppers) console.log (' - Peppers');
if (program.pineapple) console.log (' - Pineapple');
if (program.bbq) console.log (' - BBQ');
console.log (' - %s ชีส', program.cheese);
ธงสั้นอาจถูกส่งผ่านเป็น Arg เดียวตัวอย่างเช่น -ABC เทียบเท่ากับ -a -b -c ตัวเลือกหลายคำเช่น "เทมเพลตเครื่องยนต์" เป็นอูฐที่ใช้โปรแกรม TemplateEngine ฯลฯ
3. สร้างข้อมูลความช่วยเหลือโดยอัตโนมัติ
การคัดลอกรหัสมีดังนี้:
$ ./examples/pizza -help
การใช้งาน: พิซซ่า [ตัวเลือก]
ตัวเลือก:
-v, -เวอร์ชันเอาต์พุตหมายเลขเวอร์ชัน
-p, -Peppers เพิ่มพริก
-p, -Pineapple เพิ่มสับปะรด
-B, -BBQ เพิ่มซอสบาร์บีคิว
-c, -เชย <ply> เพิ่มชีสชนิดที่ระบุ [Marble]
-H, -ข้อมูลการใช้งานเอาต์พุต
แน่นอนคุณสามารถสร้างด้วยตนเอง:
การคัดลอกรหัสมีดังนี้:
#!/usr/bin/env node
-
* การพึ่งพาโมดูล
-
โปรแกรม var = ต้องการ ('../');
รายการฟังก์ชั่น (val) {
ส่งคืน val.split (','). แผนที่ (หมายเลข);
-
โปรแกรม
.Version ('0.0.1')
.Option ('-f,-foo', 'เปิดใช้งาน foo')
.Option ('-B,-Bar', 'เปิดใช้งานบาร์')
.Option ('-b,-baz', 'เปิดใช้งาน baz');
// ต้องเป็นก่อน. parse () ตั้งแต่
// Node's emit () เป็นทันที
program.on ('-help', function () {
console.log ('ตัวอย่าง:');
console.log ('');
console.log ('$ custom-help-help');
console.log ('$ custom -help -h');
console.log ('');
-
program.parse (process.argv);
console.log ('สิ่งของ');
4. ยกตัวอย่างที่สมบูรณ์
การคัดลอกรหัสมีดังนี้:
ช่วงฟังก์ชัน (val) {
ส่งคืน val.split ('.. '). แผนที่ (หมายเลข);
-
รายการฟังก์ชั่น (val) {
ส่งคืน val.split (',');
-
ฟังก์ชั่นรวบรวม (val, memo) {
memo.push (val);
บันทึกคืน;
-
ฟังก์ชั่นเพิ่มขึ้น (V, รวม) {
คืนทั้งหมด + 1;
-
โปรแกรม
.Version ('0.0.1')
.usage ('[ตัวเลือก] <ไฟล์ ... >')
.Option ('-i,-integer <n>', 'อาร์กิวเมนต์จำนวนเต็ม', parseint)
.Option ('-F,-Float <n>', 'A Float Argument', Parsefloat)
.Option ('-r,-ช่วง <a> .. <b>', 'a range', ช่วง)
.Option ('-l,-รายการ <itect>', 'รายการ', รายการ)
.Option ('-o,-optional [value]', 'ค่าเสริม')
.Option ('-C,-collect [value]', 'ค่าที่ทำซ้ำได้', collect, [])
.Option ('-v,-verbose', 'ค่าที่สามารถเพิ่มขึ้นได้', เพิ่มขึ้น, 0)
.parse (process.argv);
console.log ('int: %j', program.integer);
console.log ('float: %j', program.float);
console.log ('ตัวเลือก: %j', program.optional);
program.Range = program.Range || -
console.log ('ช่วง: %j .. %j', program.Range [0], program.Range [1]);
console.log ('รายการ: %j', program.list);
console.log ('รวบรวม: %j', program.collect);
console.log ('verbosity: %j', program.verbose);
console.log ('args: %j', program.args);