使用node.js建置命令列工具
本篇文章給大家分享的內容是使用node.js建立命令列工具,有著一定的參考價值,有需要的朋友可以參考一下
工具說明
inquirer.js:一個封裝了常用命令列互動的node.js模組,透過這個模組可以很方便地建立一個新的命令列應用。
shell.js:跨平台的unix shell指令模組。
Node版本:由於inquirer.js的非同步方法預設回傳Promise,建議使用node.js>=8。
目標
工作中有大量項目上線前最後一步需要執行測試、編譯、更新版本號、提交,甚至執行的命令都是一樣,在這裡我們透過命令列工具將這些步驟一鍵自動化,同時進行預檢查,以防止錯漏。
準備
建立一個新的Node.js專案。
建立檔案bin/my-cli.js,node.js專案通常會把cli入口放在bin目錄下,其他模組放在lib目錄下。
在bin/my-cli.js檔案頭部加上
#!/usr/bin/env node
。新增
"bin": {"my-cli": "./bin/my-cli.js"},
到package.json,宣告我們要使用的命令。專案根目錄下執行
npm link
,建立一個全域指令my-cli
。
稍微修改下my-cli.js
,加入程式碼console.log("I am a cli tool!")
,然後開啟控制台執行my-cli
指令,如果看到控制台輸出I am a cli tool!
就表示成功。
安裝依賴
首先安裝主要依賴的兩個模組(關於這兩個模組的使用請參考官方文件)
npm install inquirer shelljs
建置發布流程自動化
接下來先實作測試、更新版本號、建置、自動提交發佈的自動化
const pkg = JSON.parse(fs.readFileSync(pkgPath, 'utf8')); const { version } = await inquirer.prompt([ { type: 'list', name: 'version', message: '版本号更新方式:', choices: [ { name: `v${semver.inc(pkg.version, 'patch')}: Fix Bugs / Patch`, value: 'patch' }, { name: `v${semver.inc(pkg.version, 'minor')}: Release New Version`, value: 'minor' }, ] } ]); // 拉取最新版本 shelljs.exec('git pull'); // 运行测试 shelljs.exec('npm test'); //通过npm version更新版本号,但不自动添加git tag,而是在构建完成后由cli工具添加 shelljs.exec(`npm version ${version} --no-git-tag-version`); // 构建 shelljs.exec('npm run build'); // 提交发布代码 const nextVersion = semver.inc(pkg.version, version); shelljs.exec('git add . -A'); shelljs.exec(`git commit -m "build: v${nextVersion}"`) shelljs.exec(`git tag -a v${nextVersion} -m "build: ${nextVersion}"`); shelljs.exec("git push") shelljs.exec("git push --tags");
新增功能:設定檢查
接下來要為my-cli
新增一個功能:
當檢查到package.json的my-cli
物件的check-baidu- id
屬性為true
時,檢查專案的config.json
是否存在baidu-id
屬性
if (pkg['my-cli'] && pkg['my-cli']['check-baidu-id']) { const configPath = path.join(process.cwd(), 'config.json'); if (!fs.existsSync(configPath)) { shelljs.echo('找不到config.json'); shelljs.exit(1); } const config = JSON.parse(fs.readFileSync(configPath, 'utf8')); if (!config['baidu-id']) { shelljs.echo('config.json缺少属性[baidu-id]'); shelljs.exit(1); }
最後一步
這樣一個簡單的cli程式就實現完畢了,它自動化了建置發布流程,建置發布之前還進行了設定檢查。
在實際專案中,為了提高程式的穩定性,還需要加入檢查目前專案是否存在package.json,防止json解析出錯、執行前確認等功能,具體請參閱範例程式碼。
範例程式碼
網址:https://github.com/Aturan/node-cli-example
結語
雖然上述功能使用shell也可以實現,但程式碼寫就沒那麼方便快速,而且一旦碰到更複雜的問題,用shell實作就很麻煩,維護也是一個問題。
PS. 其實也可以用python,對於Ubuntu,系統自備Python是一個優勢,在伺服器不需要安裝環境就可以直接使用,再加上Python也有Inquirer模組。
相關推薦:
以上是使用node.js建置命令列工具的詳細內容。更多資訊請關注PHP中文網其他相關文章!

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

如何使用WebSocket和JavaScript實現線上語音辨識系統引言:隨著科技的不斷發展,語音辨識技術已成為了人工智慧領域的重要組成部分。而基於WebSocket和JavaScript實現的線上語音辨識系統,具備了低延遲、即時性和跨平台的特點,成為了廣泛應用的解決方案。本文將介紹如何使用WebSocket和JavaScript來實現線上語音辨識系

很多使用win10系統的小夥伴在玩遊戲或裝系統的時候有遇見過這個問題,應用程式無法啟動,因為應用程式的並行配置不正確。有關詳細信息,請參閱應用程式事件日誌,或使用命令列sxstrace.exe工具。這可能是作業系統沒有對應權限的緣故,具體的教學下面一起來看看吧。使用命令列sxstrace.exe工具的教學1、該問題通常會在安裝程式、遊戲的時候出錯,其提示為:應用程式無法啟動,因為應用程式的並行配置不正確。有關詳細信息,請參閱應用程式事件日誌,或使用命令列sxstrace.exe工具。 2、開始→

WebSocket與JavaScript:實現即時監控系統的關鍵技術引言:隨著互聯網技術的快速發展,即時監控系統在各個領域中得到了廣泛的應用。而實現即時監控的關鍵技術之一就是WebSocket與JavaScript的結合使用。本文將介紹WebSocket與JavaScript在即時監控系統中的應用,並給出程式碼範例,詳細解釋其實作原理。一、WebSocket技

本文詳細介紹了將Ubuntu20.04升級到22.04的步驟。對於使用Ubuntu20.04的用戶,錯過了22.04版本帶來的新功能和優勢。為了獲得更好的體驗和安全性,建議及時升級到較新的Ubuntu版本。 Ubuntu22.04的代號為“傑米水母”,讓我們一起來探索如何取得最新的LTS版本吧!如何透過命令列將Ubuntu20.04升級到22.04掌握命令列會為你帶來優勢。雖然透過GUI更新Ubuntu是可能的,但我們的重點將是透過命令列。首先,讓我們使用以下命令檢查目前運行的Ubuntu版本:$

如何利用JavaScript和WebSocket實現即時線上點餐系統介紹:隨著網路的普及和技術的進步,越來越多的餐廳開始提供線上點餐服務。為了實現即時線上點餐系統,我們可以利用JavaScript和WebSocket技術。 WebSocket是一種基於TCP協定的全雙工通訊協議,可實現客戶端與伺服器的即時雙向通訊。在即時線上點餐系統中,當使用者選擇菜餚並下訂單

在Python中,可以透過命令列傳遞參數給腳本。這些參數可以在腳本內部使用,以便根據不同的輸入執行不同的操作。 Python命令列參數的詳解:1、位置參數:在命令列中依照順序傳遞給腳本的參數,它們可以在腳本內部透過位置來存取;2、命令列選項:以-或--開頭的參數,通常用於指定腳本的特定選項或標誌;3、傳遞參數值:透過命令列傳遞參數值。

如何使用WebSocket和JavaScript實現線上預約系統在當今數位化的時代,越來越多的業務和服務都需要提供線上預約功能。而實現一個高效、即時的線上預約系統是至關重要的。本文將介紹如何使用WebSocket和JavaScript來實作一個線上預約系統,並提供具體的程式碼範例。一、什麼是WebSocketWebSocket是一種在單一TCP連線上進行全雙工

Django專案開啟之旅:從命令列開始,創建你的第一個Django專案Django是一個強大且靈活的網路應用框架,它以Python為基礎,提供了許多開發Web應用所需的工具和功能。本文將帶領你從命令列開始,創建你的第一個Django專案。在開始之前,請確保你已經安裝了Python和Django。步驟一:建立專案目錄首先,開啟命令列窗口,並建立新的目錄
