如何修改scaffold命令的文件与文件夹结构并自定义生成模板
Scaffold自定义预置规则实现方案
完全可以实现该需求,根据你使用的脚手架类型不同,有3种常见的落地方式:
方案1:复用脚手架自带的自定义模板能力
绝大多数主流脚手架(包括业务框架自研的脚手架)都支持指定自定义模板生成项目,操作步骤如下:
- 找到当前使用的脚手架默认模板存储路径,一般在全局npm包的对应脚手架
template目录下,或是脚手架安装目录的内置模板文件夹中 - 复制一份默认模板到本地单独目录,按照你的使用习惯直接修改模板内容:删除不需要的
control、demo文件夹,修改init、manifest文件为目标代码,提前将需要的图标放入模板对应路径 - 后续生成新项目时,在原有命令后加模板参数即可,多数脚手架的参数格式为:
scaffold create 新模块名 --template 你本地自定义模板的绝对/相对路径
方案2:封装自定义执行脚本(无侵入适配所有脚手架)
如果当前使用的脚手架不支持自定义模板参数,可以自己封装一层执行脚本,实现一键生成符合要求的结构:
- 新建shell或Node.js脚本,按顺序执行以下逻辑:
- 调用原生scaffold命令生成基础模块结构
- 执行删除命令清理冗余文件,例如shell中可以写
rm -rf ./control ./demo - 通过文件读写能力自动替换
init、manifest文件中的固定代码段,shell可以用sed命令实现,Node.js可以直接用fs模块读写替换 - 从本地公共存储路径复制需要的图标到生成模块的对应目录
- 后续直接运行你封装的脚本即可,不需要手动做任何调整
方案3:二次开发脚手架(适合团队共用场景)
如果是团队多人都需要使用该自定义规则,可以直接fork原脚手架的源码,将内置模板直接修改为符合你们要求的版本,发布为内部私有npm包。全团队安装自定义后的脚手架后,使用方式和原生脚手架完全一致,不需要额外加任何参数。
注意事项
- 如果直接修改了脚手架的内置默认模板,脚手架版本更新前要提前备份自定义模板,避免更新后被官方模板覆盖
- 封装跨设备使用的脚本时,要注意不同操作系统的路径、命令兼容性,避免执行报错
内容的提问来源于stack exchange,提问作者holydragon
相关产品推荐
相关产品推荐

