咱們知道許多框架會提供一個腳手架工具,咱們先下載安裝腳手架工具,而後再經過腳手架命令行來建立項目。在npm@6.1.0
中引入了npm init <initializer>
的語法。簡單來講就是你執行npm init cabloy
的話,npm會補全模塊名爲create-cabloy
,並執行npx create-cabloy
npm
咱們知道,在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
:npm會自動下載模塊create-cabloy
,而後執行create-cabloy
,順便把後面的參數傳入模塊create-cabloy
會自動執行模塊egg-born
,順便把後面的參數傳入。(爲何這樣跳轉一次?是由於egg-born
命令行工具早就實現了,而npm init cabloy
的機制是npm後期引入的)工具
egg-born
就是咱們在上面提到的腳手架工具
egg-born
會下載模塊egg-born-init-config
egg-born-init-config
的package.json
文件中定義了三個模版:每一個模版對應一個npm模塊。好比模版module-business
對應模塊egg-born-template-module-business
--type
指定了module-business
,那麼就會自動下載模塊egg-born-template-module-business
模塊egg-born-template-module-business
包含兩部分:命令行
index.js
文件:定義了一些變量,egg-born
會使用這些變量收集當前模版的參數,如name/description等等boilerplate
目錄:包含一套文件模版,egg-born
會自動替換文件模版裏面的參數,而後輸出到預約的目錄,在這個例子中就是src/module/test-todo