yeoman自定義腳手架工具

yeoman的安裝和基礎(chǔ)使用

  1. 安裝yeoman
yarn global add yo
  1. 安裝對(duì)應(yīng)的generator
yarn add generator-node global
  1. 通過(guò)yo運(yùn)行g(shù)enerator
yo node(generator的名字)

自定義generator

  1. 創(chuàng)建一個(gè)generator-開(kāi)頭的文件夾,并且初始化
mkdir generator-test
cd generator-test
yarn init
  1. 安裝yeoman-generator模塊
yarn add yeoman-generator
  1. 在文件夾的generators/app/index.js中編寫(xiě)初始化操作
// 此文件作為 Generator 的核心入口
// 需要導(dǎo)出一個(gè)繼承自 Yeoman Generator 的類(lèi)型
// Yeoman Generator 在工作時(shí)會(huì)自動(dòng)調(diào)用我們?cè)诖祟?lèi)型中定義的一些生命周期方法
// 我們?cè)谶@些方法中可以通過(guò)調(diào)用父類(lèi)提供的一些工具方法實(shí)現(xiàn)一些功能,例如文件寫(xiě)入

const Generator = require('yeoman-generator')

module.exports = class extends Generator {
  prompting () {
    // Yeoman 在詢問(wèn)用戶環(huán)節(jié)會(huì)自動(dòng)調(diào)用此方法
    // 在此方法中可以調(diào)用父類(lèi)的 prompt() 方法發(fā)出對(duì)用戶的命令行詢問(wèn)
    return this.prompt([
      {
        type: 'input',
        name: 'name',
        message: 'Your project name',
        default: this.appname // appname 為項(xiàng)目生成目錄名稱
      }
    ])
    .then(answers => {
      // answers => { name: 'user input value' }
      this.answers = answers
    })
  }
  writing () {
    // Yeoman 自動(dòng)在生成文件階段調(diào)用此方法

    // // 我們這里嘗試往項(xiàng)目目錄中寫(xiě)入文件
    // this.fs.write(
    //   this.destinationPath('temp.txt'),
    //   Math.random().toString()
    // )

    // -------------------------------------------------------

    // // 通過(guò)模板方式寫(xiě)入文件到目標(biāo)目錄

    // // 模板文件路徑
    // const tmpl = this.templatePath('foo.txt')
    // // 輸出目標(biāo)路徑
    // const output = this.destinationPath('foo.txt')
    // // 模板數(shù)據(jù)上下文
    // const context = { title: 'Hello zce~', success: false }

    // this.fs.copyTpl(tmpl, output, context)

    // -------------------------------------------------------

    // 模板文件路徑
    const tmpl = this.templatePath('bar.html')
    // 輸出目標(biāo)路徑
    const output = this.destinationPath('bar.html')
    // 模板數(shù)據(jù)上下文
    const context = this.answers

    this.fs.copyTpl(tmpl, output, context)
  }
}
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容