前端架構: 腳手架通用框架封裝之腳手架注冊和命令注冊開發(教程二)

腳手架注冊和命令注冊


1 )腳手架的注冊

  • 接上文,仍舊在 abc-cli 項目中
  • 參考:https://blog.csdn.net/Tyro_java/article/details/136381086
  • 之前初始化的時候,使用的是 yargs, 現在我們想要使用 commander
  • 在cli包中安裝 commander $ npm i commander -w @abc.com/cli
  • 進入 abc-cli/packages/cli/lib/inex.js
    const commander = require('commander');
    const { program } = commander;
    const pkg = require('../package.json');module.exports = (args) => {program.name(Object.keys(pkg.bin)[0]).usage('<command> [options]').version(pkg.version).option('-d, --debug', '是否開啟調試模式', false)program.parse(process.argv)
    }
    
  • 在 cli 目錄下執行 $ abc-cli -V 驗證可以正確輸出版本
  • 這樣腳手架注冊的默認流程實現了

2 )命令的注冊

  • 接著寫這個程序

    const commander = require('commander');
    const { program } = commander;
    const pkg = require('../package.json');module.exports = (args) => {program.name(Object.keys(pkg.bin)[0]).usage('<command> [options]').version(pkg.version).option('-d, --debug', '是否開啟調試模式', false)// 這里注冊命令program.command('init [name]').description('init project').option('-f, --force', '是否強制更新', false).action((name, opts) => {console.log('init ...')console.log(name)console.log(opts)})program.parse(process.argv)
    }
    
  • 驗證下,在cli目錄執行 $ abc-cli -h, 有如下返回

    Usage: abc-cli <command> [options]Options:-V, --version          output the version number-d, --debug            是否開啟調試模式 (default: false)-h, --help             display help for commandCommands:init [options] [name]  init projecthelp [command]         display help for command
    
    • 可以看到 Commands 欄多了 init 命令
  • 在cli目錄下,執行 $ abc-cli init 666 -f,可看到

    init ...
    666
    { force: true }
    
    • 這里,name 和 opts 都拿到了,說明命令都注冊成功了

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/715588.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/715588.shtml
英文地址,請注明出處:http://en.pswp.cn/news/715588.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

2024 最新版 Compose material3 下拉刷新

2024 最新版 Compose material3 下拉刷新&#xff0c;版本 > 1.2.0 的 compose material3 已經更新了下拉刷新組件的 Api 見 https://developer.android.com/jetpack/androidx/releases/compose-material3?hlzh-cn#1.2.0 使用方法&#xff1a;https://developer.android.…

YOLOv9獨家原創改進|增加SPD-Conv無卷積步長或池化:用于低分辨率圖像和小物體的新 CNN 模塊

專欄介紹&#xff1a;YOLOv9改進系列 | 包含深度學習最新創新&#xff0c;主力高效漲點&#xff01;&#xff01;&#xff01; 一、文章摘要 卷積神經網絡(CNNs)在計算即使覺任務中如圖像分類和目標檢測等取得了顯著的成功。然而&#xff0c;當圖像分辨率較低或物體較小時&…

可以用來測試的接口

實際開發過程中&#xff0c;我們可以通過postman工具來測試接口 get請求 https://api.github.com/events?id1&nameuser post請求 http://httpbin.org/post 參數1&#xff1a;key1value1 參數2&#xff1a;key2value2

(C語言)回調函數

回調函數是什么&#xff1f; 回調函數就是?個通過函數指針調?的函數。 如果你把函數的指針&#xff08;地址&#xff09;作為參數傳遞給另?個函數&#xff0c;當這個指針被?來調?其所指向的函數 時&#xff0c;被調?的函數就是回調函數。回調函數不是由該函數的實現?…

技術閱讀周刊第十四期:常用的 Git 配置

技術閱讀周刊&#xff0c;每周更新。 歷史更新 20231122&#xff1a;第十一期20231129&#xff1a;第十二期20240105&#xff1a;第十三期&#xff1a;一些提高生產力的終端命令20240112&#xff1a;第十四期&#xff1a;Golang 作者 Rob Pike 在 GopherConAU 上的分享 How I w…

探索Manticore Search:開源全文搜索引擎的強大功能

在當今信息爆炸的時代&#xff0c;數據的快速檢索變得至關重要。無論是在電子商務網站、新聞門戶還是企業內部文檔&#xff0c;高效的搜索引擎都是確保用戶滿意度和工作效率的關鍵因素之一。而在搜索引擎領域&#xff0c;Manticore Search 作為一款開源的全文搜索引擎&#xff…

大模型(LLM)的量化技術Quantization原理學習

在自然語言處理領域&#xff0c;大型語言模型&#xff08;LLM&#xff09;在自然語言處理領域的應用越來越廣泛。然而&#xff0c;隨著模型規模的增大&#xff0c;計算和存儲資源的需求也急劇增加。為了降低計算和存儲開銷&#xff0c;同時保持模型的性能&#xff0c;LLM大模型…

2024最新算法:鸚鵡優化算法(Parrot optimizer,PO)求解23個基準函數(提供MATLAB代碼)

一、鸚鵡優化算法 鸚鵡優化算法&#xff08;Parrot optimizer&#xff0c;PO&#xff09;由Junbo Lian等人于2024年提出的一種高效的元啟發式算法&#xff0c;該算法從馴養的鸚鵡中觀察到的覓食、停留、交流和對陌生人行為的恐懼中汲取靈感。這些行為被封裝在四個不同的公式中…

c語言--qsort函數(詳解)

目錄 一、定義二、用qsort函數排序整型數據三、用qsort排序結構數據四、qsort函數的模擬實現 一、定義 二、用qsort函數排序整型數據 #include<stdio.h> scanf_S(int *arr,int sz) {for (int i 0; i < sz; i){scanf("%d", &arr[i]);} } int int_cmp(c…

消息隊列kafka

消息隊列解決的問題 1. 解耦&#xff0c;通過消息隊列實現應用之間解耦&#xff0c;模塊兒之間解耦 2. 跨線程/進程通信&#xff0c;通過消息隊列傳遞數據&#xff0c;實現不同線程/進程間通信 3. 提升系統穩定性&#xff0c;在高并發場景通過消息隊列緩沖&#xff0c;可以實…

哈啰Java 春招 24屆

時長 1h 3. 為什么使用分布式ID&#xff0c;解決了什么問題 4. Leaf算法了解嗎&#xff1f;講一下原理和工作流程以及優缺點 5. 有沒有可能導致id重復&#xff1f;該如何解決&#xff1f; 6. 項目中redis是如何運用的&#xff1f; 7. 項目中分布式鎖是如何實現的&#xff1f; 8…

解決在 Mac 上安裝 Adobe 軟件彈出提示:安裝包已經被損壞并且不能被打開。

問題&#xff1a; “INSTALLER” is damaged and can’t be opened. You should eject the disk image. 解決方法和步驟&#xff1a; 打開安裝包&#xff1b;將安裝包 “INSTALLER” 拖動復制到某個文件夾&#xff0c;復制后的文件路徑例如像這樣&#xff1a;/Users/michael…

LLC諧振變換器變頻移相混合控制MATLAB仿真

微?關注“電氣仔推送”獲得資料&#xff08;專享優惠&#xff09; 基本控制原理 為了實現變換器較小的電壓增益&#xff0c;同時又有較 高的效率&#xff0c;文中在變頻控制的基礎上加入移相控制&#xff0c; 在這種控制策略下&#xff0c;變換器通過調節一次側開關管 的開關…

leetcode 熱題 100_盛最多水的容器

題解一&#xff1a; 雙指針遍歷&#xff1a;容量計算公式為min(左高度&#xff0c;右高度)*底部距離&#xff0c;我們可以令底部距離逐步遞減&#xff08;左右兩邊的指針向中部移動&#xff09;。此時對于min(左高度&#xff0c;右高度)&#xff0c;假設較高的線向中部移動&…

帶你玩轉數據結構-單鏈表(適合初學者的文章,講解的很仔細哦)

前言: &#x1f388;個人主頁:&#x1f388; :???初階牛??? &#x1f43b;推薦專欄: &#x1f354;&#x1f35f;&#x1f32f; C語言進階 &#x1f511;個人信條: &#x1f335;知行合一 &#x1f349;本篇簡介:>:講解數據結構中鏈表的知識,;鏈表的分類,c語言實現單鏈…

重學Springboot3-@import注解的作用

重學Springboot3-import注解的作用 1. 引言2. Import 注解的基本用法3. 導入多個配置類4. 使用 Import 導入組件5. 使用 ImportSelector 和 ImportBeanDefinitionRegistrar6. 總結 1. 引言 在 Spring Framework 中&#xff0c;Import 注解是一個重要的元注解&#xff0c;它允許…

Linux 定時備份文件到另一臺服務器

1. 需求 用戶要求將 Tomcat 的日志文件定時備份到另一臺服務器。同事給我提供了一個寫好的 java 框架&#xff0c;但實在不想給用戶再維護另一個服務了&#xff0c;所以另尋他法。 2. 問題 使用 scp 等跨服務器傳輸命令時需要手動輸入用戶名的密碼才可進行文件傳輸&#xff…

騰訊云幻獸帕魯服務器使用Linux和Windows操作系統的具體性能比較是什么?

騰訊云幻獸帕魯服務器使用Linux和Windows操作系統的具體性能比較是什么&#xff1f; 首先&#xff0c;從內核效率來看&#xff0c;Linux在同等硬件條件下的性能優于Windows。這是因為Linux內核設計簡潔&#xff0c;對服務器工作負載進行了優化&#xff0c;能夠更好地利用系統資…

機器學習:從理論到實踐

機器學習&#xff1a;從理論到實踐 摘要 機器學習是人工智能的一個核心領域&#xff0c;它使計算機能夠通過經驗來改進性能。本文將介紹機器學習的基本概念、主要算法以及如何在實際項目中應用這些算法。我們將通過Python代碼示例來演示如何使用機器學習庫scikit-learn進行數…

Python學習 day07(JSON)

JSON 各種編程語言存儲數據的容器不盡相同&#xff0c;在Python中有字典dict這樣的數據類型&#xff0c;而其他語言可能沒有對應的字典&#xff0c;為了讓不同的語言都能夠相互通用的傳遞數據&#xff0c;JSON就是一種非常良好的中轉數據格式&#xff0c;如下&#xff1a; JSON…