摘要:新建文件夾這是一個規范,可執行工具的老家。然后輸入接下來會以問答的形式向你了解你的用戶名密碼以及公開的郵箱,之后輸入注意發布的源別是淘寶源,否則哦然后看到進度條走,之后組件發布成功,可以到上搜索自己的包了。
如何用node開發自己的cli工具 靈感
寫這個工具的靈感以及場景源于youtube的一次閑聊
github 地址
blog首發
使用場景原本我們寫博客展示shell,例如:安裝運轉docker,一鍵部署腳本,等一些終端操作,我們需要進行大量的截圖展示給用戶,為什么不能更加直觀方便的生成一個網頁呢?如何使用
安裝
sudo npm install share_shell -g
幫助
tw --help #1.0暫時用這個命令,沒想到好的縮寫
查看版本
tw --version || tw -v
使用
# tw share "要展示的命令" -p "路徑" # 例如想 docker ps -a 秀一波你的docker容器 tw share "docker ps -a" 或 tw s "docker ps -a" # 默認生成 share_you_shell.html 到當前目錄 # 還可以指定路徑 tw share "ls -all" -p /usr/local/html/share_shell.html #自動創建文件,存在默認覆蓋如何基于node制作自己的跨平臺工具 ① 制作前的思考
涉及的技術棧,以及技術選型
shelljs 進行CMD處理
首先我需要拿到windows 或 linux 的系統回調,使用 linux 中的 sed -n "p;n;p" 獲取輸入任何命令的返回值在終端、那么首先考慮shelljs API 單發現 對于 sed 處理的很少,并不能滿足我們的需求,但是看到了一個萬能函數 shell.exec ,我們用他的回調來接受我們的文本
fs 或 fs-extra
fs-extra 對于 fs 的關系呢 就像是 lodash 和 underscore 前者封裝了后者,并提供了更好的支持,并做到了向下兼容API 很不容易,我們主要用它生成一個簡單的html文件來分享我們的shell
commander
我們選用 commander 來制作 類似 git docker 風格的 cli 命令行工具 , 因為沒有其他更好的選擇
其他
我個人用了lodash string 進行了偷懶操作,缺點是增加了兩個依賴,有點是快~
② 寫代碼前的準備工作初始化
npm init 初始化生成標準的 package.json 文件,包含你的git信息,發布npm能找到你的描述,聯系方式,版本號等。
新建bin文件夾
這是一個規范,可執行工具的老家。新建一個tw.js ,因為是打印機風格的,所以瞎起了個名字 取typeWriter首字母
③ 先定義一下基本的終端命令
編輯 tw.js
var program = require("commander"); var appInfo = require("../package.json"); program.version(appInfo.version) // 拿到 package.json 你定義的版本 program .command("share") // 定義你的command .alias("s") // 縮寫 .description("Enter the "shell" you want to convert and include it in " " ") // 描述 .option("-p, --path ", "Enter you html path , default ./share_you_shell.html") // option 字命令,可以無限多個 .action(function (cmd, options) { // 拿到cli輸入的option子命令,沒有可以默認 var path = typeof options.path == "string" ? options.path : "./share_you_shell.html" // 執行你的操作 ↓ // 執行cli的command exec_shell.exec(cmd, (res) => { // 回調的res根據格式轉為數組 var res_arr = S(res).lines() // 針對數組你的邏輯處理一波數組 let str = format.toTypedFormat([cmd].concat(res_arr)) // 異步制作你的文件,傳入路徑 file.mkfile(str, path) }) }).on("--help", function () { // --help commander 有默認處理,一般這部分無事可做,你還想干啥? }); program.parse(process.argv);
輸入 tw -- help 大概是這樣的
完善代碼
完善一下你各單位的邏輯,當然你也可以選擇寫的更加優雅。
預先注意的問題
我這個項目我會預先想到:保留shell的轉譯符 使用pre 原型輸入 ,處理一下scroll 保持底部,最后隨便找一個類似typewriterjs 開源庫,按照他的風格生成一下就可以
④ 測試一下寫完了?
node /bin/tw.js share "tree -L 2" -p xxx 測試一下,(你們可能沒有安裝tree,換任何可執行的其他命令,長ping 除外)
全局測一下
我們最終是要發布到npm上的,可以讓用戶-g安裝,自己應該先測試一下,
首先:確保你在 package.json 文件中添加了 bin 節點。并指明了主程序,像我這樣。
"bin": { "tw": "./bin/tw.js" },
運行
sudo npm install . -g
執行
tw share "tree -L 2" -p xxx/xxx/xx.html
如果生成了`xx.html`,恭喜你,可以發布了④如何發布到npm進行裝逼
項目已經準備好了,接下來可以著手發布了。首先npm上注冊賬號,別忘了去郵箱驗證。然后輸入:
npm adduser
接下來會以問答的形式向你了解你的用戶名、密碼以及公開的郵箱,之后輸入
npm publish
注意?。?br>發布npm 的源別是 cnpm 淘寶源,否則 401 哦
然后看到進度條走,之后組件發布成功,可以到npm上搜索自己的包了。
npm install share_shell (取決于你package.json當時填寫的項目名)
甚至你 cnpm install share_shell 也能下載,淘寶同步真他媽快。
npm i share_shell -g 全世界 所有 用戶都可以下載了
⑤ 引發的思考思考
node既然為我們提供了如此簡潔的方式,那么我們可以做一些更有意義的事情,比如 為我們的開源項目 做一個 部署、 發布、 打包、 測試 、CLI工具集,可以做一些日常工作的批處理 ,比如以前工作中的場景:多臺服務器 負載均衡 查看后端日志是個麻煩事,需要開很多終端,我們可不可以配置好rsa 或 ssh 合并多個 管道 重定向為一個終端進行查看呢?
feature(flag)做一個推薦
1.0不夠好,也就能個人blog站點用用,分享給別人瞧瞧,我打算下一步2.0發表到我即將完成的 目前技術棧比較主流的 bbs new-bee 上, 順便推廣一波,當然順便點個 star支持一下也很感激,當然這也是我首次提及此項目,此項目涉及到docker webpack vue spring-boot shell腳本 各種中間件 各種前沿ui庫腳手架 未來甚至可能嘗試基于docker的微服務小型實踐,總之想做的事情真的很多。
關于我 莊文達:全棧開發攻城獅就是愛學習,我還要刺激大家一起學習
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/113682.html
摘要:新建文件夾這是一個規范,可執行工具的老家。然后輸入接下來會以問答的形式向你了解你的用戶名密碼以及公開的郵箱,之后輸入注意發布的源別是淘寶源,否則哦然后看到進度條走,之后組件發布成功,可以到上搜索自己的包了。 如何用node開發自己的cli工具 靈感 寫這個工具的靈感以及場景源于youtube的一次閑聊 github 地址 blog首發 showImg(https://segment...
摘要:新建文件夾這是一個規范,可執行工具的老家。然后輸入接下來會以問答的形式向你了解你的用戶名密碼以及公開的郵箱,之后輸入注意發布的源別是淘寶源,否則哦然后看到進度條走,之后組件發布成功,可以到上搜索自己的包了。 如何用node開發自己的cli工具 靈感 寫這個工具的靈感以及場景源于youtube的一次閑聊 github 地址 blog首發 showImg(https://segment...
摘要:標簽聲明轉載須經本人同意這篇博客就聊一聊如何用搭建的環境,以及拓展了下如何在搭建好的環境中使用以及,廢話不多說,直接進入主題。第三步補充,依賴擴展現在,我們搭建的環境并不支持,語法,我們需要再加工一下配置。 標簽:vue,webpack,jade,scss聲明:轉載須經本人同意這篇博客就聊一聊如何用webpack搭建vue2.0的環境,以及拓展了下如何在搭建好的環境中使用scss以及p...
摘要:可以使用或來安裝我用來重新嘗試一次對速度表示不理想的可以嘗試淘寶的不要過度依賴中可以寫成放哪都行,可以寫成可以寫成看到這個畫面,安裝完成了。 初步搭建腳手架 Tips 任何不錯的開源項目都有 project-cli 腳手架、我們用它生成往往能快速配制出最佳的、理想的腳手架 我通常使用 cli 生成項目骨架再在之基礎上進行個人修改。 什么是 CLI 命令行界面(英語:command-li...
閱讀 1756·2021-11-24 09:39
閱讀 1686·2021-11-22 15:22
閱讀 1002·2021-09-27 13:36
閱讀 3230·2021-09-24 10:34
閱讀 3328·2021-07-26 23:38
閱讀 2633·2019-08-29 16:44
閱讀 973·2019-08-29 16:39
閱讀 1104·2019-08-29 16:20