平均每個月幫節省你至少10%的時間,你還有理由不寫實現命令行工具嗎?

從零實現一個命令行工具

介紹:
本教程將帶你從零實現一個命令行工具(command-line interface),對於你可能不理解的關鍵點,引(wo)入(xiang)外(tou)鏈(lan)讓你“恍然大悟”。

具體實現效果如下:

junking

實現一個簡單的命令行工具

1.初始化和設置ShaBang

創建項目,在終端cd到當前路徑,通過npm init之後,目錄中創建index.js

index.js

#! /usr/bin/env node

console.log('hello cli')

然後,修改index.js的權限:

 chmod 755 index.js

這樣我們就能簡化node index.js這個命令,而變成:

./index.js

這裏會輸出“hello cli”

注意這裏不要寫成~~index.js./index~~,不然無效。

#! /usr/bin/env node這是SheBang/HashBang,用於指定用node執行腳本文件。

2.修改package.json文件

package.json文件中添加bin字段:

"bin": {
    "hello": "./index.js"
  }

hello就是命令名,./index.js就是地址。

執行npm link命令,把命令和路徑進行連接,命令行提示如下:

junking@JunkingdeMacBook-Pro-3973 node實現命令行工具 % npm link
npm notice created a lockfile as package-lock.json. You should commit this file.
npm WARN [email protected] No repository field.

up to date in 0.964s
/Users/junking/.npm-global/bin/hello -> /Users/junking/.npm-global/lib/node_modules/node-cli-demo/index.js
/Users/junking/.npm-global/lib/node_modules/node-cli-demo -> /Users/junking/WebstormProjects/node實現命令行工具

這下,我們可以使用更簡潔的命令了:

hello

順便告訴你,你現在可以在終端的路徑執行hello命令了,不信你試試?

npm link用來在本地項目和本地npm模塊之間建立連接,可以在本地進行模塊測試。

其實到此位置,一個簡單的命令行工具已經完成了,因爲你可以執行hello命令來輸出一段文字了。

升級!俺是一個實用性的命令行工具!

簡化npm源的切換

發佈過npm包的開發者應該都經歷過,在npm中設置淘寶源可以加速下載速度,但是不能執行npm publish來發布包。或許有你們像我一樣經常進行繁瑣的切換,那麼長的命令還記不住。

現在,我們將這些簡化到命令行工具中:

我已經將這個工具做好了,已經發布到npm中,下面開始使用吧!

npm install -g [email protected]

命令:

  junking npm源     設置npm源爲官方源
  junking taobao源  設置npm源爲淘寶源
  junking publish   發佈包到npm官方

使用這些命令後,就不用再每次都來回地切換npm源啦!

具體的實現原理就是,通過node的child_process.exec()來執行對應的控制檯命令,然後將命令封裝起來,並利用yargs來配置命令行參數等等。

我覺得這個過程還是留給你自己來實現吧,思路已經告訴你了,自己動手實現印象深刻,如果仍有困難請在評論區留言,再決定是否要把分步步驟詳細呈上。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章