Yeoman-腳手架搭建工具《一》

Generators是Yeoman生態(tài)系統(tǒng)的一部分煌妈,它們是通過yo命令為最終用戶生成文件的插件蚀腿。

組織你的generators

設(shè)置為一個(gè)node模塊

generator本質(zhì)上是一個(gè)node.js的模塊

1.創(chuàng)建一個(gè)空文件夾用來寫你自己的generator。這個(gè)文件夾必須命名為generator-name(name是你自己的generator名字)舷嗡。這一點(diǎn)很重要轴猎,因?yàn)閅eoman依賴文件系統(tǒng)來查找可用的generator。

進(jìn)入你的generator文件以后咬崔,創(chuàng)建一個(gè)package.json文件税稼。這個(gè)文件是一個(gè)node module的manifest。你可以用npm init 這個(gè)命令初始化這個(gè)文件垮斯。

{
  "name": "generator-name",//必須包含generator
  "version": "0.1.0",
  "description": "",
  "files": [
    "generators"
  ],
  "keywords": ["yeoman-generator"],//必須包含yeoman-generator
  "dependencies": {
    "yeoman-generator": "^1.0.0"
  }
}

必須保持yeoman-generator的最新版本做為依賴郎仆,安裝命令

npm install --save yeoman-generator

文件結(jié)構(gòu)樹

Yeoman的功能取決于如何構(gòu)建目錄樹。每個(gè)Sub-generators都包含在其自己的文件夾中兜蠕。

調(diào)用yo name時(shí)使用的默認(rèn)生成器是app generator扰肌。它必須包含在app/目錄中。

在輸入 yo name:subcommand, 會調(diào)用Sub-generators 熊杨,Sub-generators存儲在名為與子命令完全相同的文件夾中曙旭。

eg:

├───package.json
└───generators/
    ├───app/
    │   └───index.js
    └───router/
        └───index.js

這個(gè)generator會暴露出 yo name 和 yo name:router命令

Yeoman允許兩種不同的目錄結(jié)構(gòu)。它將在./和generators/中注冊可用的generator晶府。

之前的例子也可以按照下面的結(jié)構(gòu)組織

├───package.json
├───app/
│   └───index.js
└───router/
    └───index.js

如果你用這種結(jié)構(gòu)桂躏,保證你在package.json中的files中指定

{
  "files": [
    "app",
    "router"
  ]
}

擴(kuò)展generator

一旦有了這個(gè)結(jié)構(gòu),就可以編寫實(shí)際的generator了川陆。

Yeoman提供了一個(gè)base generator剂习,你可以通過繼承它來獲得大部分的基礎(chǔ)行為

index.js

var Generator = require('yeoman-generator');

module.exports = class extends Generator {};

重寫構(gòu)造函數(shù)

module.exports = class extends Generator {
  // The name `constructor` is important here
  constructor(args, opts) {
    // Calling the super constructor is important so our generator is correctly set up
    super(args, opts);

    // Next, add your custom code
    this.option('babel'); // This method adds support for a `--babel` flag
  }
};

加上自己的函數(shù)

每次調(diào)用生成器后,添加到原型中的每個(gè)方法都會運(yùn)行较沪,并且通常是按順序運(yùn)行的鳞绕。但是,正如我們將在下一節(jié)中看到的尸曼,一些特殊的方法名將觸發(fā)特定的運(yùn)行順序们何。

module.exports = class extends Generator {
  method1() {
    this.log('method 1 just ran');
  }

  method2() {
    this.log('method 2 just ran');
  }
};

//自動按序執(zhí)行,執(zhí)行順序 method1->method2

運(yùn)行

在這里控轿,我們已經(jīng)有一個(gè)可以運(yùn)行的generator了冤竹,下一步我們看怎么把它跑起來拂封,看是不是可以正常工作。

我們的generator是在本地的贴见,還不能作為一個(gè)全局的npm module可以使用npm創(chuàng)建全局模塊并將其符號鏈接到本地模塊烘苹,運(yùn)行:

npm link

它將安裝項(xiàng)目依賴項(xiàng)并將全局模塊符號鏈接到本地文件。npm完成后片部,您就可以調(diào)用yo name镣衡,并且應(yīng)該在終端中看到log。

尋找項(xiàng)目根目錄

在generator運(yùn)行時(shí)档悠,Yeoman將嘗試根據(jù)運(yùn)行它的文件夾的上下文來解決一些問題廊鸥。

最重要的是,Yeoman在目錄樹中搜索.yo-rc.json文件文件辖所。如果找到惰说,它會將文件的位置視為項(xiàng)目的根目錄。在后臺缘回,Yeoman將把當(dāng)前目錄改為.yo-rc.json文件文件位置并在那里運(yùn)行請求的generator吆视。

調(diào)用this.config.save文件()創(chuàng)建.yo-rc.json文件文件。

所以酥宴,如果generator沒有在當(dāng)前工作目錄中運(yùn)行啦吧,請確保目錄樹中沒有.yo-rc.json文件。

Yeoman-腳手架搭建工具《二》
Yeoman-腳手架搭建工具《三》
[原文鏈接]
https://segmentfault.com/a/1190000038438057

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末拙寡,一起剝皮案震驚了整個(gè)濱河市授滓,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌肆糕,老刑警劉巖般堆,帶你破解...
    沈念sama閱讀 206,311評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異诚啃,居然都是意外死亡淮摔,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,339評論 2 382
  • 文/潘曉璐 我一進(jìn)店門始赎,熙熙樓的掌柜王于貴愁眉苦臉地迎上來噩咪,“玉大人,你說我怎么就攤上這事极阅。” “怎么了涨享?”我有些...
    開封第一講書人閱讀 152,671評論 0 342
  • 文/不壞的土叔 我叫張陵筋搏,是天一觀的道長。 經(jīng)常有香客問我厕隧,道長奔脐,這世上最難降的妖魔是什么俄周? 我笑而不...
    開封第一講書人閱讀 55,252評論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮髓迎,結(jié)果婚禮上峦朗,老公的妹妹穿的比我還像新娘。我一直安慰自己排龄,他們只是感情好波势,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,253評論 5 371
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著橄维,像睡著了一般尺铣。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上争舞,一...
    開封第一講書人閱讀 49,031評論 1 285
  • 那天凛忿,我揣著相機(jī)與錄音,去河邊找鬼竞川。 笑死店溢,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的委乌。 我是一名探鬼主播床牧,決...
    沈念sama閱讀 38,340評論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼福澡!你這毒婦竟也來了叠赦?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 36,973評論 0 259
  • 序言:老撾萬榮一對情侶失蹤革砸,失蹤者是張志新(化名)和其女友劉穎除秀,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體算利,經(jīng)...
    沈念sama閱讀 43,466評論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡册踩,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,937評論 2 323
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了效拭。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片暂吉。...
    茶點(diǎn)故事閱讀 38,039評論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖缎患,靈堂內(nèi)的尸體忽然破棺而出慕的,到底是詐尸還是另有隱情,我是刑警寧澤挤渔,帶...
    沈念sama閱讀 33,701評論 4 323
  • 正文 年R本政府宣布肮街,位于F島的核電站,受9級特大地震影響判导,放射性物質(zhì)發(fā)生泄漏嫉父。R本人自食惡果不足惜沛硅,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,254評論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望绕辖。 院中可真熱鬧摇肌,春花似錦、人聲如沸仪际。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,259評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽弟头。三九已至吩抓,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間赴恨,已是汗流浹背疹娶。 一陣腳步聲響...
    開封第一講書人閱讀 31,485評論 1 262
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留伦连,地道東北人雨饺。 一個(gè)月前我還...
    沈念sama閱讀 45,497評論 2 354
  • 正文 我出身青樓,卻偏偏與公主長得像惑淳,于是被迫代替她去往敵國和親额港。 傳聞我的和親對象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,786評論 2 345

推薦閱讀更多精彩內(nèi)容