npm init cabloy背後的故事

背景

咱們知道許多框架會提供一個腳手架工具,咱們先下載安裝腳手架工具,而後再經過腳手架命令行來建立項目。在npm@6.1.0中引入了npm init <initializer>的語法。簡單來講就是你執行npm init cabloy的話,npm會補全模塊名爲create-cabloy,並執行npx create-cabloynpm

CabloyJS提供的命令

咱們知道,在CabloyJS中建立一個項目,使用以下命令:json

npm init cabloy cabloy-demo --type=cabloy

在項目中建立一個業務模塊,使用以下命令:bash

npm init cabloy src/module/test-todo --type=module-business

npm init cabloy具體流程

下面咱們具體說一下這一行npm init cabloy具體作了哪些事情:框架

  1. 關於npm init cabloy:npm會自動下載模塊create-cabloy,而後執行create-cabloy,順便把後面的參數傳入
  2. 模塊create-cabloy會自動執行模塊egg-born,順便把後面的參數傳入。(爲何這樣跳轉一次?是由於egg-born命令行工具早就實現了,而npm init cabloy的機制是npm後期引入的)工具

    egg-born就是咱們在上面提到的腳手架工具
  3. 模塊egg-born會下載模塊egg-born-init-config
  4. 模塊egg-born-init-configpackage.json文件中定義了三個模版:每一個模版對應一個npm模塊。好比模版module-business對應模塊egg-born-template-module-business
  5. 若是用戶經過--type指定了module-business,那麼就會自動下載模塊egg-born-template-module-business
  6. 模塊egg-born-template-module-business包含兩部分:命令行

    • index.js文件:定義了一些變量,egg-born會使用這些變量收集當前模版的參數,如name/description等等
    • boilerplate目錄:包含一套文件模版,egg-born會自動替換文件模版裏面的參數,而後輸出到預約的目錄,在這個例子中就是src/module/test-todo
相關文章
相關標籤/搜索