国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

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

Raaabbit / 870人閱讀

摘要:新建文件夾這是一個規范,可執行工具的老家。然后輸入接下來會以問答的形式向你了解你的用戶名密碼以及公開的郵箱,之后輸入注意發布的源別是淘寶源,否則哦然后看到進度條走,之后組件發布成功,可以到上搜索自己的包了。

如何用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處理

首先我需要拿到windowslinux 的系統回調,使用 linux 中的 sed -n "p;n;p" 獲取輸入任何命令的返回值在終端、那么首先考慮shelljs API 單發現 對于 sed 處理的很少,并不能滿足我們的需求,但是看到了一個萬能函數 shell.exec ,我們用他的回調來接受我們的文本

fs 或 fs-extra

fs-extra 對于 fs 的關系呢 就像是 lodashunderscore 前者封裝了后者,并提供了更好的支持,并做到了向下兼容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

注意!!
發布npm 的源別是 cnpm 淘寶源,否則 401

然后看到進度條走,之后組件發布成功,可以到npm上搜索自己的包了。

npm install share_shell (取決于你package.json當時填寫的項目名)
甚至你 cnpm install share_shell 也能下載,淘寶同步真他媽快。

npm i share_shell -g 全世界 所有 用戶都可以下載了

⑤ 引發的思考

思考

node既然為我們提供了如此簡潔的方式,那么我們可以做一些更有意義的事情,比如 為我們的開源項目 做一個 部署發布打包測試CLI工具集,可以做一些日常工作的批處理 ,比如以前工作中的場景:多臺服務器 負載均衡 查看后端日志是個麻煩事,需要開很多終端,我們可不可以配置好rsassh 合并多個 管道 重定向為一個終端進行查看呢?

feature(flag)

做一個推薦

1.0不夠好,也就能個人blog站點用用,分享給別人瞧瞧,我打算下一步2.0發表到我即將完成的 目前技術棧比較主流的 bbs new-bee 上, 順便推廣一波,當然順便點個 star支持一下也很感激,當然這也是我首次提及此項目,此項目涉及到docker webpack vue spring-boot shell腳本 各種中間件 各種前沿ui庫腳手架 未來甚至可能嘗試基于docker的微服務小型實踐,總之想做的事情真的很多。

關于我 莊文達:全棧開發攻城獅

就是愛學習,我還要刺激大家一起學習

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/52833.html

相關文章

  • 何用node開發自己cli工具

    摘要:新建文件夾這是一個規范,可執行工具的老家。然后輸入接下來會以問答的形式向你了解你的用戶名密碼以及公開的郵箱,之后輸入注意發布的源別是淘寶源,否則哦然后看到進度條走,之后組件發布成功,可以到上搜索自己的包了。 如何用node開發自己的cli工具 靈感 寫這個工具的靈感以及場景源于youtube的一次閑聊 github 地址 blog首發 showImg(https://segment...

    pkwenda 評論0 收藏0
  • 何用node開發自己cli工具

    摘要:新建文件夾這是一個規范,可執行工具的老家。然后輸入接下來會以問答的形式向你了解你的用戶名密碼以及公開的郵箱,之后輸入注意發布的源別是淘寶源,否則哦然后看到進度條走,之后組件發布成功,可以到上搜索自己的包了。 如何用node開發自己的cli工具 靈感 寫這個工具的靈感以及場景源于youtube的一次閑聊 github 地址 blog首發 showImg(https://segment...

    Bmob 評論0 收藏0
  • vue+webpack+scss+jade(pug)環境搭建

    摘要:標簽聲明轉載須經本人同意這篇博客就聊一聊如何用搭建的環境,以及拓展了下如何在搭建好的環境中使用以及,廢話不多說,直接進入主題。第三步補充,依賴擴展現在,我們搭建的環境并不支持,語法,我們需要再加工一下配置。 標簽:vue,webpack,jade,scss聲明:轉載須經本人同意這篇博客就聊一聊如何用webpack搭建vue2.0的環境,以及拓展了下如何在搭建好的環境中使用scss以及p...

    GraphQuery 評論0 收藏0
  • 《從零構建前后分離web項目》實戰 -5分鐘快速構建炒雞規范VUE項目骨架

    摘要:可以使用或來安裝我用來重新嘗試一次對速度表示不理想的可以嘗試淘寶的不要過度依賴中可以寫成放哪都行,可以寫成可以寫成看到這個畫面,安裝完成了。 初步搭建腳手架 Tips 任何不錯的開源項目都有 project-cli 腳手架、我們用它生成往往能快速配制出最佳的、理想的腳手架 我通常使用 cli 生成項目骨架再在之基礎上進行個人修改。 什么是 CLI 命令行界面(英語:command-li...

    qieangel2013 評論0 收藏0

發表評論

0條評論

Raaabbit

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<