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
相关文章
相关标签/搜索