當前位置:
首頁 > 知識 > 如何使用Node.js編寫命令工具——以vue-cli為例

如何使用Node.js編寫命令工具——以vue-cli為例

vue-cli全局安裝之後,提供了vue命令和vue init、vue list、vue build三個子命令,通過命令可以搭建基於vue.js的腳手架項目。本文簡單介紹一下這些命令是如何實現的。

vue-cli的項目目錄

如下圖,由之前文章介紹,npm安裝過程中,可以利用package.json中bin欄位的配置,將bin目錄下的命令文件軟連到全局命令。也就是說在/usr/local/bin下生成了四個軟連命令:vue、vue-build、vue-list、vue-init。

如何使用Node.js編寫命令工具——以vue-cli為例

如何使用Node.js編寫命令工具——以vue-cli為例

vue命令的源碼

#!/usr/bin/env node

require("commander")
.version(require("../package").version)
.usage(" [options]")
.command("init", "generate a new project from a template")
.command("list", "list available official templates")
.command("build", "prototype a new project")
.parse(process.argv)

該命令採用commander.js來實現。commander的主要方法:

(1)parse:用於解析process.argv,將process.argv.slice(2)賦值給program.args

(2)command:創建子命令,子命令的使用方法是command [options],實際調用的命令是command-subcommand,如使用命令行執行vue list,其實是在執行vue-list全局命令;

(3)options:主要設置命令的參數,同時提供參數對應的說明文檔,默認提供的option是--help。

vue-init子命令的實現

vue-init的主要功能是拉取指定git目錄下的項目模板文件(官方或自製)到指定目錄下,用法如下

$ vue init

這裡仍需要解析process.argv,所以在vue-init中又引入了commander.js,生成了一個program

program
.usage(" [project-name]")
.option("--offline", "use cached template")

/**
* Help.
*/

function help {
program.parse(process.argv)
if (program.args.length < 1) return program.help } help

接下來就是要實現拉取模板文件,經處理後,放置到產出目錄下,具體如何實現的,接下來會有專門的文章介紹vue-cli命令的實現原理,敬請期待!

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 科技優家 的精彩文章:

限制input「type=number」的輸入位數策略整理
ASP.NET MVC 重寫RazorViewEngine實現多主題切換
我的面試準備過程——JVM相關
運維腳本:文件的空間使用和IO統計
Vulkan Tutorial 23 Descriptor layout and buffer

TAG:科技優家 |

您可能感興趣

如何編寫 bash completion script
nodejs+mongodb 編寫 restful 風格博客 api
用Click編寫Python命令行工具
Spring Boot 基礎教程 ( 三 ) :使用 Cloud Studio 在線編寫、管理 Spring Boot 應用
如何開啟Gmail的Smart Compose並讓Google AI編寫您的郵件
Marvel 計畫重新編寫《Fantastic Four》故事線
iPhone X 的新解鎖技術:用 Python 編寫 Face ID!
Effective Python之編寫高質量Python代碼的59個有效方法
.gitignore詳解及編寫
如何在CUDA中為Transformer編寫一個PyTorch自定義層
用 Python 編寫的 Python 解釋器
使用 Cython 為 Python 編寫更快的 C 擴展
不要在Python中編寫 lambda 表達式了
C++編寫Windows服務
Emoji-Log:編寫 Git 提交信息的新方法
Servlet 編寫過濾器
利用pyqt來編寫屬於自己的python Gui界面
Hegemon:使用 Rust 編寫的模塊化系統監視程序
5 個用 Python 編寫非阻塞 web 爬蟲的方法
shellcode快捷編寫工具,可針對多種常見系統指令編寫;POT:Twitter釣魚,全自動模仿給好友發釣魚鏈接