hygen 自動化創建模板文件神器

hygen是什麼?作者的介紹是:一個簡單,快速,可擴展的代碼生成器。其用途是幫助開發者自動創建模板文件的工具,旨在提高開發效率,下面就來說說怎麼在項目中使用hygen。

hygen官方文檔

 

1、全局安裝hygen

npm i -g hygen

2、安裝成功後cd到項目目錄,然後在項目中初始化hygen

hygen init self

初始化之後項目中會多一個_templates的文件夾,generator是構建器文件夾,再下一級的文件夾名是對應創建文件時的命令,ejs.t 文件則是模板文件,詳細的後面會講解。

 

3、構建第一個自己的構建器,我這裏跟官方文檔一樣起名爲mygen

hygen generator new mygen

執行完上面的命令後,_templates文件夾下面就會多了一個mygen的文件夾

 

4、使用構建器創建第一個文件

new就是mygen文件夾下面的new文件夾,執行這條命令就會創建new文件夾下面的所有模板

hygen mygen new

執行完上面的命令後,就會多出一個app的文件夾,裏邊的hello.js就是根據 mygen>new>hello.ejs.t 爲模板生成的文件,這一點通過對比hello.js 和 hello.ejs.t 就能看出。

hello.ejs.t 文件裏的to:代表生成的文件要插入的路徑和文件(例如想要生成vue文件只需要把後綴改成.vue即可),至於模板內容只需要把文件裏的內容替換成想要的模板內容即可。

 

5、自定義新創建的文件名

通過 <%= key %> 可以自定義文件名,以及賦值。首先把 hello.ejs.t 文件改成下面這樣:

---
to: app/<%= folder %>/<%= name %>.js
---
const fileName = '<%= name %>'
const hello = '<%= message %>'

console.log(fileName)
console.log(hello)

然後在命令行內運行下面這段命令,其中 --name 對應的是 <%= name %> 中的name,folder、message同理。

hygen mygen new --folder testFolder --name testFile --message HelloTest

這樣就得到了一個自定義命名的 testFolder文件夾,已經文件夾裏的 testFile.js 其中 --folder testFolder --name testFile --message HelloTest 沒有先後順序

 

到這裏,已經可以通過簡單的命令 hygen mygen new 快速的生成模板文件,只要事先編寫不同的模板文件,就可以在項目中快速的生成不同的目錄和文件,例如vue、components、api、vuex...

 

 

交互式的構建器

爲了更好的生成不同的文件 hygen 還提供了另一種生成文件的方式,使用交互式的構建器生成目錄和文件

1、執行以下命令,創建交互式構建器:

hygen generator with-prompt mygen

通過默認的generator可以構建一個帶交互提示的構建器,然後會得到一個名爲with-prompt的文件夾,與new文件夾相比,多了一個prompt.js的文件,這個文件是用來處理交互提示以及一些操作邏輯的。

2、修改模板文件和prompt.js

首先把 hello.ejs.t 文件改成下面這樣:

---
to: src/<%= folder %>/<%= name %>.js
---
const hello = <%= name %>

console.log(hello)

注:模板文件名可自己隨意修改,如 page.ejs.t

prompt.js 改成下面這樣:

module.exports = [
  {
    type: 'input',
    name: 'folder',
    message: '請輸入文件夾名: ',
    validate (value) {
      if (!value.length) {
        return '文件夾名不能爲空!'
      }
      return true
    }
  },
  {
    type: 'input',
    name: 'name',
    message: '請輸入文件名: ',
    validate (value) {
      if (!value.length) {
        return '文件名不能爲空!'
      }
      return true
    }
  }
]

3、這個時候跑下面這條命令,with-prompt 爲文件夾名,這條命令的意義和上面的hygen mygen new是一樣的。

hygen mygen with-prompt

執行命令後會得到寫在prompt.js裏的問題,這裏輸入你要創建的文件夾名稱然後回車,文件名稱同理。如果輸入的文件夾已存在,則會把創建的文件插入該文件夾中,如果是文件已存在,則會提示你是否要覆蓋。

現在已經在src目錄下創建了一個testFolder了。

其中傳入模板文件的參數除了輸入的方式,還有選擇的方式:

把prompt.js 改成下面這樣:

module.exports = [
  {
    type: 'select',
    name: 'folder',
    message: '請選擇文件夾',
    choices: [{ message: 'testFolder目錄', value: 'testFolder' }, { message: 'views目錄', value: 'views' }]
  },
  {
    type: 'input',
    name: 'name',
    message: '請輸入文件名: ',
    validate (value) {
      if (!value.length) {
        return '文件名不能爲空!'
      }
      return true
    }
  }
]

再次執行 hygen mygen with-prompt 便會得到下面這樣,然後選擇要插入的目錄,就可以在對應的目錄生成模板文件了。

 

結語:通過前期的配置,hygen能快速的幫助開發者創建各種項目目錄和文件,提高開發的效率,至於hygen要怎麼使用則需要根據實際項目去配置了。到這裏hygen的簡單使用已經介紹完了,根據官方文檔還有其他的拓展性,這個可以自行去拓展,我也會在後面慢慢的補充一些我認爲實用的東西。

 

 

以下爲擴展性內容

工具庫

hygen還內置了 inflection-js 、change-case 等工具以滿足某些要求,例如下面的 h.changeCase.isUpper(判斷大寫)、h.inflection.dasherize(將下劃線轉爲破折號)

---
to: src/<%= folder %>/<%= name %>.js
---
const folder = '<%= h.changeCase.isUpper(folder) %>'
const hello = '<%= h.inflection.dasherize(name) %>'

console.log(folder)
console.log(hello)

條件渲染

參數裏還可以使用三元運算和 if 判斷,if 的語法和工作原理 點這裏 EJS 文檔

---
to: "src/<%= folder %>/<%= name ? name : 'test' %>.js"
---
const folder = '<%= h.changeCase.isUpper(folder) %>'
const hello = '<%= h.inflection.dasherize(name) %>'
const message = 'message = ' + '<% if(message){ -%><%= message %><% } -%>'

console.log(folder)
console.log(hello)
console.log(message)

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章