實現(xiàn)create-osdoc-app腳手架

介紹

好久沒更新了拒贱,最近一直忙于業(yè)務(wù)開發(fā)宛徊,沒有多少時間學(xué)習(xí)自己的東西,抽著某天晚上的功夫?qū)懥艘粋€腳手架柜思,其實就是一個簡單的node腳本岩调。

我們知道,在小公司很少有時間有精力從01基于webpack去封裝一個類似于create-react-app赡盘、vue-cli号枕、UmiJs之類的腳手架,更多的是我們基于上述的輪子二次封裝服務(wù)于我們實際業(yè)務(wù)的應(yīng)用模板陨享。

這樣做的話葱淳,我們可以依次封裝我們的業(yè)務(wù)模板,比如我自己在公司業(yè)務(wù)基礎(chǔ)上抛姑,封裝了三個業(yè)務(wù)模板赞厕,分別是:

  • fast_h5_umi 基于 Typescript+React+Umi3.x+antd-mobile 構(gòu)建的通用H5模板。
  • fast_h5_vue 基于 vue +vuex-cli3+vuex+vue-router+vant 構(gòu)建的通用H5模板定硝。
  • fast_react_native 基于 react-native+dvajs+antd-mobile-rn+react-navigation@5.x+axios+Typescript 開發(fā)的通用react-native模板

這樣做的話皿桑,以后我們有相應(yīng)的項目都可以直接復(fù)制粘貼開始改起來,大大提高我們的開發(fā)效率

但是這樣的話我們還得去手動的去記錄每個項目的地址,這樣是很不方便的诲侮,這時候我們就想到是否可以搞一個類似于create-umi那樣的腳手架镀虐,全局安裝之后初始化項目,可以根據(jù)選項生成不同的內(nèi)容沟绪。

開始

發(fā)現(xiàn)問題之后就要解決問題刮便,在閱讀UmiJs的腳手架工具create-umi的源碼之后,可以看出其實就是利用npmbin字段绽慈,向全局注冊一個命令恨旱,這個命令就可以使用。

比如如下代碼:

// package.json

{
    "bin": {
        "create-osdoc-app": "cli.js"
    },
}

注冊了這樣一個命令坝疼,其中的create-osdoc-app就是全局需要使用的命令,對應(yīng)的cli.js是本地的一個文件搜贤。我們可以在這個文件中相應(yīng)的處理。

// cli.js

// 查看版本

if (args.v || args.version) {
  console.log('version', chalk.blue(package.version));
  if (existsSync(join(__dirname, '.debug'))) {
    // 如果是本地調(diào)試會打印 @debug
    console.log(chalk.cyan('@debug'));
  }
  process.exit(0);
}

if (!semver.satisfies(process.version, '>= 8.0.0')) {
  console.error(chalk.red('? The generator will only work with Node v8.0.0 and up!'));
  process.exit(1);
}

// 取默認(rèn)應(yīng)用名
const name = args._[0] || '';

(async () => {
  await runCli({
    name,
    args,
  });
  process.exit(0);
})();

通過簡單的校驗之后裙士,我們會執(zhí)行一個runCli方法入客,參數(shù)是我們執(zhí)行命令的時候攜帶的參數(shù)

具體的runCli可以查看該文件 https://github.com/osdoc-dev/create-osdoc-app/blob/master/lib/run.js

使用

將腳手架推送至npm之后,我們就可以安裝并且使用它了腿椎。

全局安裝 create-osdoc-app

$ npm install create-osdoc-app -g

安裝后執(zhí)行如下命令

$ yarn create-osdoc-app [appName]
$ create-osdoc-app

? ?? 請輸入應(yīng)用名稱 (new-app)?
new-app-demo

? ?? 請選擇應(yīng)用模板 (Use arrow keys)
> fast_h5_umi    - 基于umi3.x+typescript+antd-mobile 構(gòu)建h5模板
  fast_h5_vue    - vue +vue-cli3+vuex+vue-router+vant 快速開發(fā) h5模板
  fast_react_native  - 基于 react-native+dvajs+antd-mobile-rn+react-navigation@5.x+axios+typescript 開發(fā)的通用react-native

Cloning into 'new-app'...
remote: Enumerating objects: 123, done.
remote: Counting objects: 100% (123/123), done.
remote: Compressing objects: 100% (111/111), done.
Receiving objects:  22% (28/123),
Receiving objects: 100% (123/123), 99.90 KiB | 7.00 KiB/s, done.
Resolving deltas: 100% (4/4), done.
> ?? clone success
?? Copied to clipboard, just use Ctrl+V
? File Generate Done

執(zhí)行完相應(yīng)的命令之后桌硫,我們會將模板clone至本地,我們就可以進(jìn)行開發(fā)了啃炸。

后期我們還可以增加本地化的一些操作铆隘,比如現(xiàn)在是內(nèi)置的一些模板,我們可以通過腳手架去下載指定的模板南用,或者通過腳手架幫助我們?nèi)?chuàng)建一個組件之類的東西膀钠,這些都是可以的。

關(guān)于

總的來說主要就是通過node去幫助我們完成一些純?nèi)肆Φ男袨楣妫瑴p少我們的工作量肿嘲,加快開發(fā)效率

文章首發(fā)于自己的個人博客 實現(xiàn)create-osdoc-app腳手架

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市筑公,隨后出現(xiàn)的幾起案子雳窟,更是在濱河造成了極大的恐慌,老刑警劉巖匣屡,帶你破解...
    沈念sama閱讀 222,183評論 6 516
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件封救,死亡現(xiàn)場離奇詭異,居然都是意外死亡捣作,警方通過查閱死者的電腦和手機誉结,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,850評論 3 399
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來券躁,“玉大人惩坑,你說我怎么就攤上這事摩梧⊥旆牛” “怎么了丑瞧?”我有些...
    開封第一講書人閱讀 168,766評論 0 361
  • 文/不壞的土叔 我叫張陵吟税,是天一觀的道長。 經(jīng)常有香客問我稀轨,道長,這世上最難降的妖魔是什么岸军? 我笑而不...
    開封第一講書人閱讀 59,854評論 1 299
  • 正文 為了忘掉前任奋刽,我火速辦了婚禮,結(jié)果婚禮上艰赞,老公的妹妹穿的比我還像新娘佣谐。我一直安慰自己,他們只是感情好方妖,可當(dāng)我...
    茶點故事閱讀 68,871評論 6 398
  • 文/花漫 我一把揭開白布狭魂。 她就那樣靜靜地躺著,像睡著了一般党觅。 火紅的嫁衣襯著肌膚如雪雌澄。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,457評論 1 311
  • 那天杯瞻,我揣著相機與錄音镐牺,去河邊找鬼。 笑死魁莉,一個胖子當(dāng)著我的面吹牛睬涧,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播旗唁,決...
    沈念sama閱讀 40,999評論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼畦浓,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了检疫?” 一聲冷哼從身側(cè)響起讶请,我...
    開封第一講書人閱讀 39,914評論 0 277
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎电谣,沒想到半個月后秽梅,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,465評論 1 319
  • 正文 獨居荒郊野嶺守林人離奇死亡剿牺,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,543評論 3 342
  • 正文 我和宋清朗相戀三年企垦,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片晒来。...
    茶點故事閱讀 40,675評論 1 353
  • 序言:一個原本活蹦亂跳的男人離奇死亡钞诡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情荧降,我是刑警寧澤接箫,帶...
    沈念sama閱讀 36,354評論 5 351
  • 正文 年R本政府宣布,位于F島的核電站朵诫,受9級特大地震影響辛友,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜剪返,卻給世界環(huán)境...
    茶點故事閱讀 42,029評論 3 335
  • 文/蒙蒙 一废累、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧脱盲,春花似錦邑滨、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,514評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至面哥,卻和暖如春哎壳,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背尚卫。 一陣腳步聲響...
    開封第一講書人閱讀 33,616評論 1 274
  • 我被黑心中介騙來泰國打工耳峦, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人焕毫。 一個月前我還...
    沈念sama閱讀 49,091評論 3 378
  • 正文 我出身青樓蹲坷,卻偏偏與公主長得像,于是被迫代替她去往敵國和親邑飒。 傳聞我的和親對象是個殘疾皇子循签,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,685評論 2 360