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

Generators是Yeoman生態系統的一部分,它們是經過yo命令爲最終用戶生成文件的插件。node

組織你的generators

設置爲一個node模塊

generator本質上是一個node.js的模塊npm

1.建立一個空文件夾用來寫你本身的generator。這個文件夾必須命名爲generator-name(name是你本身的generator名字)。這一點很重要,由於Yeoman依賴文件系統來查找可用的generator。json

進入你的generator文件之後,建立一個package.json文件。這個文件是一個node module的manifest。你能夠用npm init 這個命令初始化這個文件。segmentfault

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

必須保持yeoman-generator的最新版本作爲依賴,安裝命令babel

npm install --save yeoman-generator

文件結構樹

Yeoman的功能取決於如何構建目錄樹。每一個Sub-generators都包含在其本身的文件夾中。app

調用yo name時使用的默認生成器是app generator。它必須包含在app/目錄中。函數

在輸入 yo name:subcommand, 會調用Sub-generators ,Sub-generators存儲在名爲與子命令徹底相同的文件夾中。工具

eg:ui

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

這個generator會暴露出 yo name 和 yo name:router命令this

Yeoman容許兩種不一樣的目錄結構。它將在./和generators/中註冊可用的generator。

以前的例子也能夠按照下面的結構組織

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

若是你用這種結構,保證你在package.json中的files中指定

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

擴展generator

一旦有了這個結構,就能夠編寫實際的generator了。

Yeoman提供了一個base generator,你能夠經過繼承它來得到大部分的基礎行爲

index.js

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

module.exports = class extends Generator {};

重寫構造函數

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
  }
};

加上本身的函數

每次調用生成器後,添加到原型中的每一個方法都會運行,而且一般是按順序運行的。可是,正如咱們將在下一節中看到的,一些特殊的方法名將觸發特定的運行順序。

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

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

//自動按序執行,執行順序 method1->method2

運行

在這裏,咱們已經有一個能夠運行的generator了,下一步咱們看怎麼把它跑起來,看是否是能夠正常工做。

咱們的generator是在本地的,還不能做爲一個全局的npm module可使用npm建立全局模塊並將其符號連接到本地模塊,運行:

npm link

它將安裝項目依賴項並將全局模塊符號連接到本地文件。npm完成後,您就能夠調用yo name,而且應該在終端中看到log。

尋找項目根目錄

在generator運行時,Yeoman將嘗試根據運行它的文件夾的上下文來解決一些問題。

最重要的是,Yeoman在目錄樹中搜索.yo-rc.json文件文件。若是找到,它會將文件的位置視爲項目的根目錄。在後臺,Yeoman將把當前目錄改成.yo-rc.json文件文件位置並在那裏運行請求的generator。

調用this.config.save文件()建立.yo-rc.json文件文件。

因此,若是generator沒有在當前工做目錄中運行,請確保目錄樹中沒有.yo-rc.json文件。

Yeoman-腳手架搭建工具《二》
Yeoman-腳手架搭建工具《三》

相關文章
相關標籤/搜索