
umi 自定义模板实战5分钟生成团队标准项目告别重复配置【免费下载链接】umiA framework in react community ✨项目地址: https://gitcode.com/GitHub_Trending/um/umi上周组里新拉了个中后台光对齐 ESLint 和 umi 配置就耗掉半小时新人还得翻旧仓库当脚手架。把 umi 脚手架配上自定义模板就是预先写好的项目骨架生成新项目时照抄并注入变量新项目第一天就是一条命令的事。本文带你走通全流程读完动手约 15 分钟。这个机制到底省了什么说白了模板机制是把人对齐变成机器对齐统一规范ESLint、tsconfig、目录结构都从同一份模板长出来消除重复一条命令替代一堆复制粘贴再改名沉淀最佳实践模板每改一次后续所有新项目自动受益实现并不复杂。packages/create-umi/src/index.ts 负责收集参数、串联整个生成流程真正渲染文件的是 packages/utils/src/BaseGenerator/BaseGenerator.ts它只做一件事把模板目录拷到目标位置顺手替换变量。环境先做个体检。动手前的环境体检Node.js 14umi 4 官方支持的下限npm / yarn / pnpm 任一即可pnpm 是官方推荐本地已装 umi 4.x跑一下umi create --help能出帮助页就没问题 想核对依赖怎么声明可以直接看自定义 CLI 示例的 examples/cli-custom/package.json核心就一个 umi 依赖很轻。环境没问题了直接上手。从骨架到跑通的完整路径搭骨架模板目录长什么样一句话把你希望新项目长成的样子原样做成模板。my-template/ ├── src/ │ ├── pages/ # 页面骨架 │ └── layouts/ # 布局骨架 ├── config/ # 构建配置骨架 ├── package.json.tpl # 依赖声明带变量 └── tsconfig.json带 .tpl 后缀的是可渲染文件生成时替换变量不是原样拷贝其余文件原样拷过去。官方最小模板在packages/create-umi/templates/app/照着它改就行。它生成出来的项目默认页面长这样最值得注意的细节官方把 package.json 写成 package.json.tpl因为版本号是生成时才注入的不能写死。接线入口文件的核心逻辑一句话把模板目录和变量表交给渲染器剩下的它来。const generator new BaseGenerator({ path: join(__dirname, .., templates, appTemplate), // 模板目录 target, // 新项目落地目录 data: { version, npmClient, registry, author }, // 要注入的变量 }); await generator.run();tpl 文件里用{{{ }}}引用变量比如写umi: {{{ version }}}生成时就会被替换成真实版本号。最容易踩的坑data 里传的变量名和 tpl 里用的必须一字不差写错了文件里会原样留下一串{{{ }}}。点火本地验证与团队分发一句话本地跑通渲染再打包成 npm 包让全团队一条命令使用。# 1. 本地先验证写个脚本调 BaseGenerator渲染到临时目录 node render.js my-app # 2. 把模板目录打成 npm 包并发布 npm publish # 3. 团队成员直接用 umi create my-app --template my-team--template传参后create-umi 会把包名解析成umijs/my-team-template再去注册表拉压缩包所以包名必须遵循这个命名约定拉不到包多半是名字没对齐。进阶玩法让模板更聪明交互式收集参数。如果你需要让用户在创建时选less 还是 tailwind传一个 questions 数组就行new BaseGenerator({ path, target, data, questions: [{ type: select, name: style, message: Pick a style solution, choices: [less, tailwind], }], });用户的回答会自动并入渲染上下文tpl 里可以直接引用。模板继承。如果你想基于官方模板长出自己的内容而不是从零开始直接拷一份官方模板目录把自己的文件和变量塞进去。官方模板本身只用了四五个变量扩展成本很低。条件文件过滤。如果你需要用户勾了才生成 husky 配置在 tpl 里写 EJS 条件即可% if (withHusky) { % husky: ^8.0.0 % } %条件不满足时这段内容整行不会渲染不会留下空配置。社区资源速览模板下载与包名解析实现packages/create-umi/src/template.ts自定义 CLI 完整示例preset 加插件注册自定义命令examples/cli-custom/src/官方中后台场景模板结构完整可抄packages/create-umi/templates/max/官方入门文档含--template参数说明docs/docs/docs/guides/getting-started.md规范被模板锁住之后新项目的成本就只剩一条命令。下次拉新项目直接用你自己那版。【免费下载链接】umiA framework in react community ✨项目地址: https://gitcode.com/GitHub_Trending/um/umi创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考