如何从零开发一个脚手架

2 篇文章 0 订阅
2 篇文章 0 订阅

1 创建工程

1.1 创建文件并安装依赖

  1. 创建一个my-cli文件夹
  2. 执行npm init初始化工程
  3. 安装依赖
  4. 创建入口文件, index.js
依赖名称依赖版本依赖作用
chalk4.1.2log美化工具
cli-table0.3.11控制台table美化工具
commander11.1.0命令行工具
download-git-repo3.0.2拉取远程模板
ejs3.1.10模板引擎
inquirer8.2.0交互式选项

1.2 配置命令

打开package.json文件

{
	"name": "my-cli",  // npm包名称
	"version": "1.0.0", // npm包版本
	"description": "我的脚手架", // 描述
	"bin": {
		"mc": "index.js" // mc是脚手架命令,index.js是入口文件
	}
}

1.3 编辑入口文件

#!/usr/bin/env node
const pkg = require('./package.json');
const program = require('commander');
const inquirer = require('inquirer');
const chalk = require('chalk');
const downloadGit = require('download-git-repo');
const fs = require('fs');
const path = require("path")

// 定义命令选项
program
	.version(pkg.version)
	.option("-v, --version", pkg.version)

program
	.command("create")  // 命令
	.description("创建模板")  // 命令描述
	.action(() => { // 命令行为
		// 创建交互式命令行
		inquirer.prompt([
			{
				type: "list", // 交互类型,list是选项
				name: "type", // 变量名
				message: "请选择模板类型", // 交互提示信息
				choices: [
					{name: "模板1",value: "temp-one"},
					{name: "模板2",value: "temp-two"}
				],
				validate(val){ // 对用户的输入进行校验
					if (val === "temp-one") return true; // 校验通过进行下一步
					else return "模板2还在建设当中,敬请期待..." // 校验不通过,并返回提示信息
				}
			}{
				type: "input", // 交互类型输入
				name: "name",
				message: "请输入项目名称", // 交互提示信息
				default"my-app", // 当用户不输入时,提供的默认值
			}
		]).then(values => {
			const { type, name } = values;
			let api = null;
			// 根据用户选择的模板类型,确定模板仓库地址
			if (type === "temp-one") {
				api = `direct:${git地址1}#${分支名}`
			}
			if (type === "") {
				api = `direct:${git地址2}#${分支名}`
			}

			const outputDir = path.join(process.cwd(), name);
			// 检测当前目录下,是否存在要创建的同名文件夹
			fs.access(outputDir, fs.constants.F_OK, function(err){
				if (!err){
					console.log(`${chalk.red(`创建失败: 当前目录下已经存在${name}目录`)}`)
					return
				}
				// 下载远程模板代码
				downloadGit(api, outputDir, { clone: true }, function(err){
					if (err) {
						console.error(err)
						console.log(`${chalk.red(`远程代码加载失败`)}`)
						return
					}
					// 走到这里,说明远程代码已经加载完成。可能需要对模板代码进行一定的编辑
					// 所以,这里可以使用ejs进行模板代码的处理。也可以更改某些文件

					// 用更改package.json举例子
					const pkgJsonPath = `${outputDir}/package.json`;
					// 读取模板中package.json文件的内容
					fs.readFile(pkgJsonPath, "utf-8", function(err,data){
						// 读取失败报错
						if (err){
							console.error(err)
							return;
						}
						// 合并package.json的内容
						const pkgJsonStr = JSON.parse(data);
						pkgJsonStr['name'] = name;
						const writeJsonStr = JSON.stringfy(pkgJsonStr, null, 2); 
						fs.writeFile(pkgJsonPath, writeJsonStr, function(err){
							// 文件写入失败
							if (err) {
								console.error(err)
								return;
							}
							
							// 到这里就全部完成了
						})
					})
				})
			})
		})
	}) 

1.4 说明

本文章尽量用最简单的方式来说明,脚手架如何开发。大家可以根据需求对代码自行更改;其中对于依赖的使用,可以查找对应依赖的文档进行查看。一般使用通义千问就够了,比较方便

大家可能也会有以下问题
1、git拉取模板时,如何开放模板的clone权限。
用gitlab举例子,去gitlab中选择个人令牌,选择权限范围后,创建个人令牌
然后使用的git地址就变成这样

http://oauth2:${token}@git.your-git-repo.com/template.git

可以看到,@的后半部分是git模板的地址,前半部分是个人令牌
使用download-git-repo库拉取远程代码的时候
要拼成

direct:http://oauth2:${token}@git.your-git-repo.com/template.git#分支名

2、ejs的使用
这个可以根据ejs文档来参考,在download远程模板结束之后,遍历download下来的模板文件,并用ejs引擎进行解析替换即可

  • 5
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 好的,我可以使用中文回答这个问题。 要在 IntelliJ IDEA 中使用 Spring Boot 开发框架,需要安装 Spring Boot 插件。以下是在 IntelliJ IDEA 中安装和使用 Spring Boot 插件的步骤: 1. 打开 IntelliJ IDEA,并转到 File > Settings > Plugins。 2. 在搜索栏中输入“Spring Boot”,然后按下回车键。 3. 点击“Install”按钮,等待插件安装完成。 4. 重新启动 IntelliJ IDEA。 现在,您可以创建 Spring Boot 项目。以下是创建 Spring Boot 项目的步骤: 1. 转到 File > New > Project。 2. 选择“Spring Initializr”选项。 3. 选择项目类型、语言和 Spring Boot 版本,然后单击“Next”按钮。 4. 配置项目元数据,如项目名称、包名和项目位置。 5. 单击“Next”按钮,然后配置项目依赖项。 6. 单击“Finish”按钮,创建项目。 现在,您可以在 IntelliJ IDEA 中使用 Spring Boot 开发框架了。您可以编写 Spring Boot 应用程序,并运行、测试和调试它们。 ### 回答2: Spring Boot开发脚手架Idea插件是一种能够加快Spring Boot项目开发的工具,通过该插件可以在Idea开发环境中更便捷地创建和配置Spring Boot项目。它提供了一些自动化的功能,让开发者能够快速搭建项目骨架和集成常用组件。 首先,脚手架插件可以帮助我们快速创建Spring Boot项目。在Idea中,我们可以通过该插件选择不同的项目模板,包括基础的Spring Boot项目、Web项目、数据库连接等等。这样,我们就不需要从开始创建项目,只需要根据需求选择对应的模板即可。同时,插件还能自动生成项目的基本结构和配置文件,提供了一种快速启动项目的方式。 其次,脚手架插件能够方便地集成常用组件。在开发过程中,我们经常需要使用到一些常用的依赖,例如数据库连接、缓存、安全等等。而插件可以在创建项目时给我们提供这些常用组件的选项,我们只需要勾选对应的组件即可,插件会自动下载并引入相关的依赖包。这样,我们就不需要手动配置这些依赖,减少了重复劳动,提高了效率。 此外,脚手架插件还能够提供一些自动化的功能。比如,它可以自动帮我们生成一些常见的代码模板,如控制器、服务、实体类等。我们只需要提供一些必要的信息,插件就能快速生成相应的代码,减少了手动编写的工作量。同时,插件还能提供代码优化和检查的功能,帮助我们提高代码质量。 综上所述,Spring Boot开发脚手架Idea插件是一种能够加快项目开发速度的工具。它能够帮助我们快速创建项目、集成常用组件,并提供一些自动化的功能。通过使用该插件,我们可以更加高效地进行Spring Boot项目的开发。 ### 回答3: Spring Boot开发脚手架一个非常实用的工具,可以帮助我们快速搭建Spring Boot项目的基础结构和所需的配置。而IDEA插件则是为了方便开发人员在开发过程中更快速、高效地使用Spring Boot脚手架提供的功能。 首先,Spring Boot开发脚手架通常包含了一些常用的模块和功能,比如数据库访问、RESTful接口、日志记录等。这些功能在每个新项目中都是必须的,但是手动配置和搭建这些功能会很繁琐。使用IDEA插件可以很方便地创建一个全新的Spring Boot项目,自动集成了这些常用模块和功能,省去了手动配置的麻烦。 其次,IDEA插件还提供了一些便捷的功能,例如自动代码生成、快速导航和调试等。在使用Spring Boot脚手架开发项目的过程中,我们常常需要创建实体类、DAO层、Service层和Controller层等,这些代码的编写是比较繁琐和重复的。通过IDEA插件提供的自动代码生成功能,我们只需要输入相关信息,插件就可以根据模板自动生成所需的代码,大大提高了开发效率。另外,IDEA插件还可以方便地导航项目的各个部分,提供了快速访问工具、类和方法的定位等功能,让开发者更容易理清代码的结构和关系。同时,在调试过程中,IDEA插件提供了一些方便的调试工具和快捷键,可以快速定位和解决问题。 总结来说,Spring Boot开发脚手架IDEA插件在开发过程中可以帮助开发者更快地搭建Spring Boot项目的基础结构和所需的配置,提供了自动代码生成、快速导航和调试等便捷功能,可以大大提高开发效率和代码质量。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值