为什么我们需要一套脚手架,它能帮助我们解决哪些痛点问题。
脚手架(Scaffold)是一种用于快速创建项目结构和提供基础代码的工具。它在软件开发中非常有用,具有以下几个主要原因:
提高效率:脚手架可以帮助开发人员快速创建项目的基本结构,包括目录、文件和配置等,省去了手动创建的时间和精力。它们通常还提供了一些常用的代码模板和功能实现,帮助开发人员更快速地开始项目并加速开发进度。
标准化项目结构:脚手架定义了一套标准的项目结构,它可以使团队成员之间的项目结构保持一致,提高代码的可读性和维护性。使用脚手架可以确保项目具有清晰的组织结构,使其易于理解和导航。
自动化配置和集成:脚手架可以自动配置项目所需的各种环境、依赖项和工具。它们能够处理许多繁琐的配置步骤,例如安装依赖项、配置构建工具、设置测试环境等。通过自动化这些过程,脚手架可以显著减少出错的可能性,并使整个开发过程更加顺畅。
最佳实践和模板代码:脚手架通常是由经验丰富的开发人员或团队创建的,并且秉承了最佳实践。它们可以提供一些示例代码、模板和约定,帮助开发人员遵循良好的编码规范和设计模式。这有助于提高代码质量、减少重复工作,并促进团队间的协作和沟通。
综上所述,使用脚手架可以加快项目搭建和开发速度,保持项目结构的一致性,自动化配置和集成,以及提供最佳实践和代码模板。通过使用脚手架,开发人员可以更专注于业务逻辑的实现,而不必花费过多时间和精力在项目基础架构的搭建上。
- 首先我们下载所需依赖
"dependencies": {
"commander": "^11.0.0",
"download-git-repo": "^3.0.2",
"inquirer": "^8.2.5",
"ora": "^5.4.1"
}
- 在pacckage.json配置bin指令
这个指令是前缀命令,例如 npm 这样的前缀
"bin": {
"cime-cli":"./bin/index.js"
},
-
创建目录bin下index.js
-
编写代码 首先引入依赖
// 创建命令行指令
const program = require('commander')
// 获取json文件获取版本
const package = require('../package.json');
// 创建命令行交互,提供用户交互收集用户信息
const inquirer = require('inquirer');
// 可以从远程拉取git仓库
const download = require('download-git-repo');
// 创建命令行加载动画
const ora = require('ora')
// 路径
const path = require('path');
- 创建查看版本指令
提供输入 cime-cli --version 输出版本
//提供输入 cime-cli --version 输出版本
program.version(`@cime/cli v${package.version}`)
- 创建所需全局变量
模板可以创建多个
// 提供模板
let templates = [{
name: 'cime-admin-react',
value: '仓库地址'
},
{
name: 'cime-admin-react-electron',
value: '仓库地址'
},
{
name: 'cime-admin-vue',
value: '仓库地址'
}
]
// loading 加载
const loading = ora('正在下载....')
- 创建指令获取输入项目名和选择模板下载对应项目
链式调用进行下一步操作
program.command('create')
.description('创建模版') // 设置命令描述
.action(async () => { // 异步处理函数
// 创建终端输入框
let {
name
} = await inquirer.prompt({
type: 'input', // list 列表选择 confirm 选择框
name: 'name', // 问题名称
message: '请输入项目名称:'
})
console.log('用户创建的的项目名字是:', name);
let {
template
} = await inquirer.prompt({
type: "list", // 实现选择下载模板
name: 'template',
message: '请选择下载的项目:',
choices:templates
})
console.log('选择模板:', template);
loading.start()
// 开始下载代码:
// downloadGitRepo('下载路径','目标文件夹路径','下载完毕后执行的函数')
// process.cwd() 获取 命令是在哪个目录下输入的
let dest = path.join(process.cwd(), name)
downloadGitRepo(template, dest, function (err) {
if (err) {
loading.fail('创建模版失败:' + err.message) // 失败loading
} else {
loading.succeed('创建模版成功!') // 成功loading
}
})
})
使用方法
-
将本地文件系统中的一个包链接到项目
-
现在就可以输入你的创建的指令查看版本下载项目了
输入指令查看版本 cime-cli --version
- 输入指令下载远程仓库中的项目
输入指令下载项目 cime-cli create 选择模板下载
这样我们就手写了一款属于自己的脚手架,方便我们管理使用自己的项目,中间编写代码时可以慢慢调试编写,还有一些依赖版本有兼容性,下载依赖时注意版本。