您好,登錄后才能下訂單哦!
之前從來沒接觸過這類的課題,自己寫命令行工具,沒寫過之前覺得這是一個很高大上的玩意兒,寫過之后才發現原來不難。寫之前當然是先在網上扒拉扒拉,看看別人怎么寫的,結果找來找去,千篇一律,一個字也不帶換的,還都是從npm倉庫中復制下來的,還復制的不全,我已無力吐嘈!!!!
最后還是在NPM倉庫中找到一段比較符合自己的介紹,就是自定義命令,下面就按照我的代碼記錄一下我是怎么寫的。
首先創建項目,alaska-cli,編輯package.json,加入babel等就不細說了,目錄結構如下:
alaska-cli
-index.js
-src
--alaska-build.js
本項目依賴commander包,這是一個非常方便簡單的開發自己的CLI命令的包。
先看index.js:
'use strict'; const program = require('commander'); const buildAdmin = require('./src/alaska-build'); program .version('0.1.0') .command('alaska-build') .alias('build') .description('build admin views') .action(buildAdmin); program.parse(process.argv);
導入commander, 導入CLI命令背后要執行的函數文件。
使用commander創建命令:
.version('0.1.0')
命令版本,這個沒什么好說的。
.command('alaska-build')
命令名字,就是以后可以直接在命令窗口使用的名字,像webpack babel等。
.alias('build')
命令的別名,就像小名一樣,一般是個短名字。
.description('build admin views')
命令介紹,生辰八字什么的可以寫到這,
.action(buildAdmin);
執行命令時要調用的函數,
program.parse(process.argv);
開始解析命令。
到這已經差不多了,我要說現在收尾你信么,不管你信不信,反正我是信了,剩下的就是寫這個命令要怎么做事了。
看alaska-build.js:
/** * 所有讀取文件時的錯誤處理 * */ function excludeError(err, files) { if (err) { console.log(err); } else { if (typeof files === 'object' && files.length > 0) { collection(files); } else { console.log('未找到要構建的文件!'); } } } module.exports = function () { fs.readdir(path, excludeError); };
這一段不用說了吧,就是讀取一個目錄下的所有文件,從每個文件里導出一些數據組合再輸出到另一個目錄下。
寫完這些邏輯,這個項目基本上已經完了,把項目上傳到NPM倉庫,在其他項目里就可以用 npm install
來安裝這個包,之后就能像webpack babael 這類的命令一樣直接用了。
github : https://github.com/maichong/alaska-cli.git
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。