node編寫cli工具

2021-08-04 22:33:36 字數 2514 閱讀 7120

本文以自己的my-cli為例,將開發到發布過程完整記錄下來,看完本文,你將學會如何從零開發乙個cli專案,如何上傳到github庫,以及如何使用npm發布自己的包。

開發乙個cli工具前首先要想好它能做什麼。以我自己為例,我需要乙個工具,讓我能只輸入一行命令就幫我快速搭建好專案結構,就像這樣:

是不是很炫酷?放心,很簡單。

首先建立你的cli專案,並使用npm init建立乙個package.json。

$ mkdir

my-cli && cd my-cli

$ npm init

,

"repository": ,

"keywords": [

"cli"

],"author": "[email protected]",

"license": "mit",

"bugs": ,

"homepage": ""

}

package.json中有乙個"bin"字段,配置後才可以在控制台使用你的命令。

"bin":
使用 npm install -g 將你當前的專案安裝到全域性環境,現在你可以在命令列使用"my-cli"命令了。

我們自定義的指令可以執行了,接下來編寫**實現功能。my-cli的主要功能就是生成專案模板,乙個思路是用乙個templates資料夾儲存專案模板,然後通過fs.mkdir()來建立專案目錄,最後把檔案從templates資料夾拷貝到專案中去。

var fs = require('fs');

var path = require('path');

function

copytemplate (from, to)

function

write (path, str, mode)

function

mkdir (path, fn) )

}

核心**就這麼點,是不是非常簡單?

整個專案檔案結構差不多就這個樣子,把你需要的檔案放到templates資料夾,然後用copytemplate方法將檔案拷貝到專案目錄下。

建立檔案目錄和拷貝檔案的過程,**看著比較醜陋

平常我們使用命令列工具時都會用到引數,如 webpack -p, express -e 等,現在我們來為自己的cli新增接收命令列引數的功能。為my-cli設計四個引數,用來向專案中新增類庫。

$ my-cli -j -s -v -b

//-j :新增jquery

//-s :新增swiper

//-v :新增vue

//-b :新增bootstrap

使用commander包可以簡化解析引數過程,但是本專案比較簡單,我也不想額外引入其他的包了,處理一些簡單的引數其實並不難。

node中我們可以使用process.argv來獲取命令列引數,process.argv是乙個引數陣列,第一項為node.exe的絕對路徑,第二項為執行該js的絕對路徑,使用process.argv.slice(2)即可獲取輸入的引數陣列。

通過遍歷引數陣列來檢查命令中輸入了哪些引數。如果輸入了預設的引數,就為config物件新增對應的屬性,在生成檔案時根據onfig判斷是否將模板檔案拷貝到專案中。繼續醜陋的**:

至此我們的專案已經基本完成了,使用 npm install -g 將專案安裝到全域性環境,然後新建乙個專案資料夾,使用my-cli命令來生成專案模板。

要想將自己的包發布到npm上,首先得有乙個npm賬號,建立賬號非常簡單,輸入npm adduser,簡單三步即可完成建立。

建立好user後,使用npm publish即可將當前專案發布到npm上了,以後就可以使用npm install -g my-cli 來安裝你的cli工具。

相信大家看完本文後知道如何根據自己的需求製作cli工具了。本文中的my-cli比較簡單,權當做拋磚引玉。如果想檢視完整原始碼或者使用這個工具,可以戳這裡:github位址。

使用nodejs編寫cli工具

1 建立乙個資料夾 my cli 2 在當前資料夾開啟命令列輸入 npm init,建立乙個package.json,並配置bin欄位,配置後才可以在控制台使用你的命令 bin 3 在當前資料夾建立乙個index.js,這個檔案是你命令列要執行的檔案 首行寫上 node,表示用node來執行這個檔案...

如何用node開發自己的cli工具

寫這個工具的靈感以及場景源於youtube的一次閒聊 原本我們寫部落格展示shell,例如 安裝運轉docker,一鍵部署指令碼,等一些終端操作,我們需要進行大量的截圖展示給使用者,為什麼不能更加直觀方便的生成乙個網頁呢?sudo npm install share shell gtw help 1...

cli工具,前戲

一 準備到一些模組 1.chalk 命令列 顏色 2.fs extra nodejs fs模組到替代,實現檔案拷貝刪除移動等功能 3.inquirer互動式命令列工具 4.mem fs mem fs editor 提供模版檔案等操作 讀取json等 5.path nodejs檔案路徑操作 二 bin...