從零實現一個命令行工具
介紹:
本教程將帶你從零實現一個命令行工具(command-line interface),對於你可能不理解的關鍵點,引(wo)入(xiang)外(tou)鏈(lan)讓你“恍然大悟”。
具體實現效果如下:
實現一個簡單的命令行工具
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來配置命令行參數等等。
我覺得這個過程還是留給你自己來實現吧,思路已經告訴你了,自己動手實現印象深刻,如果仍有困難請在評論區留言,再決定是否要把分步步驟詳細呈上。