自建node的簡單cli——san-cli

公司的業(yè)務有部分需要兼容IE8,雖然公司內部已有相應的框架蔬胯,但是百度的San還是引起了個人的興趣对供,奈何San這個東西,一年多了配套還有待完善笔宿,為了快速構建項目犁钟,自建一個簡單cli棱诱,步驟如下:

創(chuàng)建cli項目

創(chuàng)建san-cli目錄泼橘,并使用npm init創(chuàng)建package.json文件:

mkdir san-cli && cd san-cli
npm init

在交互詢問中輸入相應參數(shù),其中name參數(shù)檢驗npm中是否已占用迈勋,如創(chuàng)建好的package.json文件如下炬灭,其中bin為cli調用的命令名稱,main為入口js:

{
  "name": "my-san-cli",
  "version": "0.0.1",
  "description": "Auto generate san(a MVVM framework) project template",
  "main": "index.js",
  "bin": {
    "san": "./index.js"
  },
  "repository": {
    "type": "git",
    "url": "git+https://github.com/woodstream/san-cli.git"
  },
  "keywords": [
    "san-cli"
  ],
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "author": "woodstream",
  "license": "MIT",
  "bugs": {
    "url": "https://github.com/woodstream/san-cli/issues"
  },
  "dependencies": {
  }
}

由于入口為index.js靡菇,所以創(chuàng)建index.js文件重归,并寫入如下內容:

#!/usr/bin/env node

const clone = require('git-clone')
const program = require('commander')
const shell = require('shelljs');
const log = require('tracer').colorConsole()


program
    .version('0.0.1')
    .description('San(MVVM framework)應用模板工程的cli')
program
    .command('* init <project> <tpl>')
    .action(function(tpl, project) {
        log.info('目前san-cli支持amd和webpack兩種模板,示例:san init myproject --amd | --webpack')
        if (tpl && project) {
            let pwd = shell.pwd()
            let url;
            if(tpl == '--amd'){
                url = `https://github.com/woodstream/san-mui-with-amd.git`;
            }else{
                url = `https://github.com/woodstream/san-mui-with-webpack.git`;
            }
            log.info(`正在${url}拉取模板代碼 ...`)
            clone(url, pwd + `/${project}`, null, function() {
                shell.rm('-rf', pwd + `/${project}/.git`)
                log.info('模板工程建立完成')
            })
        } else {
            log.error('正確命令例子:san-cli init myproject --amd')
        }
    })
program.parse(process.argv)

意思是根據(jù)不同的命令參數(shù)厦凤,拉取不同多腳手架模版鼻吮,可以觀察到require到依賴模塊,所以npm里添加依賴配置较鼓,執(zhí)行命令:

npm i commander --save
npm i git-clone --save
npm i shelljs --save
npm i tracer --save

執(zhí)行完后再次打開package.json椎木,可以發(fā)現(xiàn)里面多了如下內容:

 "dependencies": {
    "commander": "^2.12.2",
    "git-clone": "^0.1.0",
    "shelljs": "^0.7.8",
    "tracer": "^0.8.11"
  }

安裝并測試cli

執(zhí)行如下命令全局安裝即可,:

npm i 上述san-cli項目的本地或遠程路徑 -g

安裝完成,測試:

san init san-demo --amd

發(fā)布到npm

1博烂、先到npm網(wǎng)站注冊一個賬號香椎,去關聯(lián)郵箱收取郵件并驗證郵箱。
2禽篱、在命令行登錄npm畜伐,輸入下述命令,隨后填入注冊時的信息:

npm adduser

3躺率、發(fā)布提交:

npm publish

4玛界、若發(fā)布失敗,檢查是否使用npm的源悼吱,如使用cnpm等第三方源的切換回npm源慎框。

?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市舆绎,隨后出現(xiàn)的幾起案子鲤脏,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,042評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件猎醇,死亡現(xiàn)場離奇詭異窥突,居然都是意外死亡,警方通過查閱死者的電腦和手機硫嘶,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 89,996評論 2 384
  • 文/潘曉璐 我一進店門阻问,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人沦疾,你說我怎么就攤上這事称近。” “怎么了哮塞?”我有些...
    開封第一講書人閱讀 156,674評論 0 345
  • 文/不壞的土叔 我叫張陵刨秆,是天一觀的道長。 經(jīng)常有香客問我忆畅,道長衡未,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,340評論 1 283
  • 正文 為了忘掉前任家凯,我火速辦了婚禮缓醋,結果婚禮上,老公的妹妹穿的比我還像新娘绊诲。我一直安慰自己送粱,他們只是感情好,可當我...
    茶點故事閱讀 65,404評論 5 384
  • 文/花漫 我一把揭開白布掂之。 她就那樣靜靜地躺著抗俄,像睡著了一般。 火紅的嫁衣襯著肌膚如雪板惑。 梳的紋絲不亂的頭發(fā)上橄镜,一...
    開封第一講書人閱讀 49,749評論 1 289
  • 那天,我揣著相機與錄音冯乘,去河邊找鬼洽胶。 笑死,一個胖子當著我的面吹牛裆馒,可吹牛的內容都是我干的姊氓。 我是一名探鬼主播,決...
    沈念sama閱讀 38,902評論 3 405
  • 文/蒼蘭香墨 我猛地睜開眼喷好,長吁一口氣:“原來是場噩夢啊……” “哼翔横!你這毒婦竟也來了?” 一聲冷哼從身側響起梗搅,我...
    開封第一講書人閱讀 37,662評論 0 266
  • 序言:老撾萬榮一對情侶失蹤禾唁,失蹤者是張志新(化名)和其女友劉穎效览,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體荡短,經(jīng)...
    沈念sama閱讀 44,110評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡丐枉,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 36,451評論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了掘托。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片瘦锹。...
    茶點故事閱讀 38,577評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖闪盔,靈堂內的尸體忽然破棺而出弯院,到底是詐尸還是另有隱情,我是刑警寧澤泪掀,帶...
    沈念sama閱讀 34,258評論 4 328
  • 正文 年R本政府宣布听绳,位于F島的核電站,受9級特大地震影響族淮,放射性物質發(fā)生泄漏辫红。R本人自食惡果不足惜凭涂,卻給世界環(huán)境...
    茶點故事閱讀 39,848評論 3 312
  • 文/蒙蒙 一祝辣、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧切油,春花似錦蝙斜、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,726評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至攻谁,卻和暖如春稚伍,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背戚宦。 一陣腳步聲響...
    開封第一講書人閱讀 31,952評論 1 264
  • 我被黑心中介騙來泰國打工个曙, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人受楼。 一個月前我還...
    沈念sama閱讀 46,271評論 2 360
  • 正文 我出身青樓垦搬,卻偏偏與公主長得像,于是被迫代替她去往敵國和親艳汽。 傳聞我的和親對象是個殘疾皇子猴贰,可洞房花燭夜當晚...
    茶點故事閱讀 43,452評論 2 348

推薦閱讀更多精彩內容