คุณต้องตรวจสอบให้แน่ใจก่อนว่ามีสภาพแวดล้อม node.js บนคอมพิวเตอร์
และรันโค้ดต่อไปนี้บนบรรทัดคำสั่งเพื่อเริ่มต้นไฟล์ package.json
npm init -y
ในเวลานี้ ข้อผิดพลาดจะถูกรายงานอย่างแน่นอนเมื่อใด ดำเนินการ mycli
บนบรรทัดคำสั่ง
กำหนดค่าคำสั่งที่กำหนดเอง
package.json
เพื่อเพิ่มฟิลด์ bin
และเชื่อมโยงคำสั่ง mycli
"bin": { "mycli": "./test.js" }
/test.js
ใหม่console.log ("คำสั่ง mycli ดำเนินการเรียบร้อยแล้ว");
install
แต่โครงการยังไม่ได้เผยแพร่ไปยัง npm ดังนั้นในขณะนี้ ให้ใช้คำสั่ง npm link
เพื่อ เชื่อมโยงคำสั่ง mycli
กับโลกโกลบอลในขณะนี้ หากคุณเรียกใช้งาน mycli
จากบรรทัดคำสั่ง ข้อผิดพลาดจะไม่ถูกรายงานอีกต่อไป
การกำหนดค่าสคริปต์
test.js:
console.log("การดำเนินการคำสั่ง mycli สำเร็จ");
จากนั้นดำเนินการ mycli
และหน้าต่างป๊อปอัปข้อผิดพลาดจะปรากฏขึ้น
เนื่องจากเมื่อดำเนินการคำสั่ง mycli
จะเทียบเท่ากับการปล่อยให้คอมพิวเตอร์ดำเนินการไฟล์ และระบบคอมพิวเตอร์ ไม่สามารถดำเนินการไฟล์ js ได้โดยตรง สิ่งนี้กำหนดให้เราต้องเพิ่มการกำหนดค่าในบรรทัดแรกของโค้ดสคริปต์เพื่อระบุ node.js
บนคอมพิวเตอร์เพื่อรันไฟล์สคริปต์ js นี้
#!/usr/bin/env node
เนื่องจากสภาพแวดล้อมการดำเนินการมีการเปลี่ยนแปลง คุณต้องลบไฟล์ที่เชื่อมโยงก่อนหน้านี้ ตำแหน่งไฟล์อาจเป็น C:Program Filesnodejsnode_modules
ค้นหา mycli
แล้วลบออก npm link
อีกครั้ง
ตอนนี้รัน mycli
บนคอนโซลอีกครั้ง และคุณจะเห็นว่าคอนโซลพิมพ์ได้อย่างถูกต้อง
Chalk
เพื่อส่งออกฟอนต์สีสันสดใสOra
คล้ายกับcommander
inquirer
(เช่น: ถามคำถาม...)ชอล์ก
npm ติดตั้ง [email protected] -S
const chalk = need("ชอล์ก"); //ชอล์ก // const hello = chalk.red("สวัสดี"); // const สวัสดี = chalk.blue.bgRed("สวัสดี"); // const สวัสดี = chalk.blue.bgYellow("สวัสดี"); const สวัสดี = chalk.rgb(200, 200, 200).bgRgb(0, 200, 3)("สวัสดี"); console.log(สวัสดี);
Ora
npm ติดตั้ง [email protected] -S
const ora = need("ora"); //หรือ const สปินเนอร์ = ora({ ข้อความ: "กำลังติดตั้ง..." - spinner.start(); setTimeout(() => { // spinner.stop(); spinner.succeed("การติดตั้งสำเร็จ"); // console.log("การติดตั้งสำเร็จ"); }, 2000)
start
โหลดstop
หยุดโหลดsucceed
สิ้นสุดการโหลดด้วยสไตล์ที่ประสบความสำเร็จCommander
เช่น vue -V
git --version
vue create
และคำสั่งอื่นๆ จำเป็นต้องใช้ไลบรารี commander เพื่อนำคำสั่งดังกล่าวไปใช้
-V
--help
ฯลฯ หลังจากที่คำสั่งที่ใช้สามารถเข้าใจได้ว่าเป็นพารามิเตอร์ของคำสั่ง จากนั้นเราจำเป็นต้องได้รับพารามิเตอร์เหล่านี้และจัดการกับเหตุการณ์ต่างๆ โดยการตัดสินความแตกต่างในพารามิเตอร์
ในสภาพแวดล้อม ของโหนด สามารถรับพารามิเตอร์นี้ได้ผ่าน process.argv
ไลบรารี คำสั่ง ช่วยให้เราสรุปวิธีการบางอย่างโดยที่เราไม่ต้องตัดสินคำสั่งที่ดำเนินการโดยอินพุตของผู้ใช้
npm install [email protected] -S
const commander = need("commander"); - commander.parse(process.argv); // หลังจาก
การติดตั้งเสร็จสิ้น commander จะให้คำสั่งบางอย่างแก่เราโดยอัตโนมัติ เช่น --help
เรามาทดสอบกันด้านล่าง:
mycli --help
commander .version("1.0.0");
ดำเนินการ mycli -V
และคุณจะเห็นว่าคอนโซลพิมพ์หมายเลขเวอร์ชัน 1.0.0
เมธอดคำสั่งแบบกำหนดเอง
commander.option(指令名, 描述, 回调函数)
--init
:commander.option("--init", "this is init", () => { //ชอล์ก // const hello = chalk.red("สวัสดี"); // const สวัสดี = chalk.blue.bgRed("สวัสดี"); // const สวัสดี = chalk.blue.bgYellow("สวัสดี"); const สวัสดี = chalk.rgb(200, 200, 200).bgRgb(0, 200, 3)("สวัสดี"); console.log(สวัสดี); //หรือ const สปินเนอร์ = ora({ ข้อความ: "กำลังติดตั้ง..." - spinner.start(); setTimeout(() => { // spinner.stop(); spinner.succeed("การติดตั้งสำเร็จ"); // console.log("การติดตั้งสำเร็จ"); }, 1,000) })
ตอนนี้ดำเนินการทดสอบ mycli --init
:
คือ commander.option("--number <num>", "log a number", (num) => { console.log(หมายเลข); })
<参数名>
ระบุพารามิเตอร์ที่ต้องส่ง และ [参数名]
ระบุพารามิเตอร์ที่ไม่จำเป็นต้องส่ง ป้อน mycli --number 100
บนคอนโซลแล้วกด Enter คุณจะเห็น 100
จะถูกส่งออก
วิธีการคำสั่งแบบกำหนดเอง
commander.command("create <projectName>").action((projectName)=>{ console.log(ชื่อโครงการ); })
ดำเนินการ mycli create xx
แล้วกด Enter คุณจะเห็น xx
ถูกส่งออกบนคอนโซล
ดูวิธีใช้
โดยดำเนินการ mycli --help
คุณจะเห็นว่าคำแนะนำและคำสั่งที่เราเพิ่งกำหนดค่าปรากฏอยู่ในรายการวิธีใช้
สอบถาม
npm ติดตั้งสอบถาม -S
prompt
สอบถาม.prompt([ - ประเภท: "อินพุต", ชื่อ: "ชื่อผู้ใช้", ข้อความ: "กรุณากรอกชื่อผู้ใช้:" - ]).แล้ว((ตอบ)=>{ })
type
ระบุประเภทของคำถาม และค่าอาจเป็น: input
, number
, password
, editor
ฯลฯ
answer
คือ {username: 输入的值}
input
ของประเภทอินพุตconst enquirer = need("inquirer"); commander.command("เพิ่มผู้ใช้").การกระทำ(() => { สอบถาม.prompt([ - ประเภท: "อินพุต", ชื่อ: "ชื่อผู้ใช้", ข้อความ: "กรุณากรอกชื่อผู้ใช้:" - ]).แล้ว((ตอบ) => { console.log(คำตอบ); - })
confirm
commander.command("testcon").action(() => { สอบถาม.prompt([ - ประเภท: "ยืนยัน", ชื่อ: "อายุ" ข้อความ: "คุณอายุเกิน 18 ปีหรือเปล่า?" - ]).แล้ว((ตอบ) => { console.log(คำตอบ); - })
ป้อน y
หรือ n
เพื่อตัดสิน
list
ประเภทการเลือกวิทยุcommander.command("testlist").action(() => { สอบถาม.prompt([ - ประเภท: "รายการ", ชื่อ: "lib", ข้อความ: "เลือกกรอบงานที่จะใช้:", ตัวเลือก: [ "vue2", "vue3", "ตอบสนอง", "เก๋ไก๋", - - ]).แล้ว((ตอบ) => { console.log(คำตอบ); - })
ดำเนินการคำสั่ง mycli testlist
:
download-git-repo เป็นเครื่องมือสำหรับการดึงโค้ด
ติดตั้ง
npm install [email protected] -S
const downgit = need("download-git-repo"); downgit("github:kongcodes/vue3-vant", downUrl, { โคลน: false }, ฟังก์ชัน (ผิดพลาด) { console.log(ผิดพลาด) })
เข้าใจว่าพารามิเตอร์แรกในวิธี downgit
กำลังดาวน์โหลดเทมเพลตโครงการ vue3-vant
ของผู้ใช้ kongcodes จาก github พารามิเตอร์ตัวที่สอง downUrl
คือไดเร็กทอรีที่ควรดาวน์โหลดเทมเพลต clone
พารามิเตอร์ที่สามคือว่าจะใช้ git clone
เพื่อดาวน์โหลดหรือไม่ พารามิเตอร์ตัวที่สี่คือบางสิ่งที่จะดำเนินการเมื่อการดาวน์โหลดเสร็จสิ้น
command
commander.command("create <projectName>").action((projectName) => {ร่วมกับเมธอด command
const สปินเนอร์ = ora({ ข้อความ: "กำลังดาวน์โหลด https://github.com/kongcodes/vue3-vant..." - spinner.start(); fs.mkdirSync(`./${ชื่อโครงการ}`); const downUrl = `${process.cwd()}\${ชื่อโครงการ}`; downgit("github:kongcodes/vue3-vant", downUrl, { โคลน: false }, ฟังก์ชัน (ผิดพลาด) { ถ้า (ผิดพลาด) โยนผิดพลาด; spinner.stop(); console.log(chalk.green("downgit สำเร็จ")); - })
ดำเนินการ mycli create pro
แล้วกด Enter ไดเร็กทอรี pro
จะถูกสร้างขึ้นในไดเร็กทอรีปัจจุบัน และเทมเพลต vue3-vant
จะถูกดาวน์โหลดไปยังไดเร็กทอรีนี้
https://github.com/kongcodes/mycli