官網寫的readme太差了,連一個像樣的demo都沒有。我看了幾天readme也沒學會。後來仍是去看源碼本身揣摸出來的。是tj太nb了,讓我這個小白的看不懂他的的文章,仍是寫不清楚本身的庫能幹什麼、怎麼幹。下面是我寫的demo。方便像我這樣的小白入門。若你能看懂tj寫的readme。關了這個頁面吧。node
mkdir projectCommand cd projectCommand lerna init lerna create testCommand lerna add commander
修改./projectCommand/packages/testCommand/package.json
npm
{ ... "bin": { "demo": "./bin/index.js" } }
在中建立./projectCommand/packages/testCommand/bin/index.js
。編輯內容以下:json
#!/usr/bin/env node // 快速引入Commander的實例 const program = require('commander') // 定義選項 program .option('-d, --debug', 'output extra debugging') .option('-s, --small', 'small pizza size') // 解析選項,即:執行選項 program.parse(process.argv) // process.argv 會獲取命令行的數據,返回類型是數組。 // 根據選項及其值,執行相應邏輯。 if (program.debug) console.log(program.opts()) if (program.small) console.log('- small pizza size')
該文件的處理邏輯:根據選項執行相應輸出。數組
在./projectCommand/packages/testCommand
下執行npm link
再執行demo -d
,則輸出:{ debug: true, small: undefined }
再執行demo -s
,則輸出:- small pizza size
若獲得相應輸出,則驗證cli運行正確。學習
建立一個其餘包
在./projectCommand/
中執行ui
lerna create useCommand lerna add testCommand cd packages/testCommand npm unlink // 取消全局軟連接該包 demo -d // 驗證是否取消成功 // => zsh: command not found: demo
編輯./projectCommand/packages/useCommand/package.json
命令行
{ ... "script": { ... "useDemo": "demo -d" } }
在./projectCommand/packages/useCommand/
下執行debug
npm run useDemo // => { debug: true, small: undefined }
若獲得相應輸出,則驗證cli運行正確。code
記得在./projectCommand/packages/testCommand
下執行npm unlink
刪除projectCommand
項目。ip
我已經學習了lerna。不用也是浪費。
它是定義命令的地方。本地中定義的命令叫demo
。讀者也能夠叫別的名字。也能夠定義多個命令。
定義命令在package.json中。使用命令在終端中。執行命令時會執行package.json中bin字段對應的文件。
#!/usr/bin/env node
是標明當前文件是可執行文件。使用node解析當前文件。可執行文件的第一行必須是它。
請使用commonjs規範編輯該文件。
如果全局安裝該包則全局能夠使用該包的命令。
如果局部安裝該包則局部能夠使用該包的命令。
by stone