1 Star 13 Fork 4

轩小浅 / create-quick

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
贡献代码
同步代码
取消
提示: 由于 Git 不支持空文件夾,创建文件夹后会生成空的 .keep 文件
Loading...
README
MIT

create-quick

约定代替编码,更灵活、迅速的脚手架搭建工具

项目历程  


介绍

create-quick对脚手架核心业务进行封装,使用者只需关心脚手架的内容,约定代替编码的方式更灵活、迅速的创建脚手架


演示

npm create quick
# or
npm init quick
# or
npx create-quick

案例

提供一个自用的脚手架,基于create-quick开发,你们可以参照这个来理解更详细的参数。

create-xuanxiaoqian  


使用

如果我们只需要使用这个仓库快速创建脚手架,我们只需要关心templates文件夹。

仓库会自动扫描templates文件夹下的内容去提供使用者选择,所以我们就不需要手动写询问代码

template文件夹第一层是大项目名称,例如Vue3、React18这种命名。进入其中一个大项目文件夹,里面还有三个文件夹。

base文件夹:里面的内容就是一个项目的基本构架,里面所有内容都是直接复制到初始化路径

ejs文件夹:里面的内容是用于更精细化的配置可选配置

options文件夹:就是用于给用户选择第三方库的权利,例如Axios、Pinia等等


约定

templates文件夹就是我们脚手架模板存放的地方,里面使用约定代替配置的方式,有着以下约定

  • templates文件夹里面的第一层为模板名,例如:templates/vue3、templates/nest
  • 模板名里面有着三个文件夹,分别是baseoptionsejs(可通过配置变量自定义命名)
  • options文件夹里面的各种选项里面的文件目录需要跟base目录一一对应
  • options里面的package.json会和base的package.json进行合并,其他文件全是替换
  • options里面的ejsData.js为参数变量,用于给ejs模板引擎渲染的,同时里面可以定义一个回调函数,到该options执行完成之后会调用回调函数,可以接收两个值,一个是新项目路径,一个是config参数。该文件也不会添加到base里(可通过配置变量自定义命名)
  • ejs文件夹为模板引擎,里面的文件目录也是和base目录一一对应,例如:main.ts.ejs文件名最终合并到base里面的名字为main.ts,也会覆盖base

核心函数createTemplate接收三个参数:

const config: configType = {	// 渲染参数
    projectName: 'default-project',
    template: 'vue3',
    ejsVarAilas: 'config-text.js',
    options: ['pinia', 'prettier', 'vue-router']
}

const templatesRoot = path.resolve(__dirname, './templates')	// 模板文件夹path

createTemplate(config, templatesRoot, ({ newProjectPath }) => {
    // 渲染完成的回调函数
    console.log(`创建完成,新项目路径为${newProjectPath}`)
})

仓库里面的入口文件index.ts询问方式可以自定义,你只需要将数据给到createTemplate渲染函数即可


渲染流程

1. 数据传递createTemplate函数

2. createTemplate函数内部设置参数默认值

3. 复制Base文件夹进入目标路径

4. 递归Options文件夹下面的所有ejsData.js文件并获得它们的Key,因为ejs模板存在不存在的Key会报错(考虑换一个)

5. 根据数据里的options渲染指定的插件,并且加载插件目录下的ejsData.js数据

6. 渲染Ejs文件夹

7. 调用收尾函数 (重置package.json文件)

8. 调用用户的回调函数

renderTemplate下面有三个文件夹 baseejsoptions

第一步:直接递归复制base

第二步:递归options里面所有的ejsData.js数据,但是并不赋值,将Key记录,因为ejs不能渲染不存在的Key

第三步:传递过来的options数据选择需要的进行options文件夹进行复制,并且读取里面的ejsData.js数据

第四步:根据ejsData.js数据进行渲染ejs文件夹所有文件

第五步:调用内部收尾函数

第六步:调用渲染函数的回调函数

TODO:修改渲染代码,ejsData.js里的回调函数数据不全、文档未完善

TODO2: 2023/6/4 options只有一个可选项的时候会跳过选择、给可选文件夹加关键字然后就可以自动选中、项目中断创建还是会导致创建

快速上手

前往最小化demo仓库 create-mini-quick


疑问交流

QQ群: qian-cli(746382337)

MIT License Copyright (c) 2023 轩小浅 Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

简介

约定代替编码的脚手架搭建工具 展开 收起
MIT
取消

发行版 (1)

全部

贡献者

全部

近期动态

加载更多
不能加载更多了
NodeJS
1
https://gitee.com/xuanxiaoqian/create-quick.git
git@gitee.com:xuanxiaoqian/create-quick.git
xuanxiaoqian
create-quick
create-quick
master

搜索帮助